書き置き。

ほぼ勉強の記録みたいなもんです。

リアルタイム通信をAppSyncで行うアーキテクチャー

構想中のサービスに使えそうな気がするので、メモも兼ねて記事を書いておく。

非同期で処理をした後に、リアルタイムに処理結果を画面へ反映するのに、使えるかもしれない。
非同期でやると処理が終わったかどうかを問い合わせるポーリング処理が必要になる。
昔はそんな処理を愚直に書いたこともあったが、なかなか大変な作業だった印象がある。 そこらへんをまるっとAppSyncにお任せして、処理結果を結果表示用のテーブルに書いておくだけでいい、ということになると、だいぶコードがすっきりしそう。

DynamoDB Stream は存在を知らなかった。これはこれで使いどころがありそうなので出番があったら使ってみたい。
ドキュメントはこのへん。 https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Streams.html

Amazon DynamoDB Advanced Design Patterns


【AWS Black Belt Online Seminar】Amazon DynamoDB Advanced Design Pattern

 

冒頭の対象者の説明で、これはまだ早かったと悟ったのだけど、一応最後まで試聴した。

 

GSIとかの用語が理解できてなかったので、動画の流れからして、おそらくこういう使い方をするものなのだろう、と推測しながら、最後まで見た。

 

基本をおさらいしてから、出直してこよう。

AWSに自分用gyazo的なものを作った

zpn.booth.pm

だいたいのことはここに書いてある。まじで書いてある。読まないで画像だけ見てやると大事なところを読み飛ばして、途端にわからなくなるのでよく読め。何なら一通り最後まで読んでから始めるくらいが良い。

この本に書いてないことと言えば、AWSはよく名前をつけるときに説明を入れるフォームがあるんだけど、これがあとから編集できないことが多い。やらかした・・・って思うことがよくある。作り直すのも面倒なので、説明はよく考えて入力したほうが良い。まじで。

ざっくり流れ

  • gyazo コマンドを実行する
  • マウスカーソルが範囲選択モードに変わる
  • 範囲選択する
  • 画面キャプチャ画像が一時ファイルに保存される
  • API GatewayへPOSTされる
  • APIへはACMで登録したSSL証明書を使ってhttpsアクセスされる
  • Lambdaが動く
  • S3に保存される
  • URL保存されたURLが返ってくる
  • クリップボードにURLが渡される
  • 一時ファイル削除

  • URLをブラウザで開く

  • S3へアップロードされたファイルへhttpsでアクセスする

  • APIやS3へアクセスする際にroute53で名前解決する

カスタマイズ

この本は、Ubuntu Desktop を前提としているので、Macの画面をキャプチャしてPOSTするスクリプトだけカスタマイズした。

.bashrc に API Key を書いた

# Gyazo API Key
export GYAZO_API_KEY='APIキー'

/Users/ユーザー名/bin/gyazo
どこに置いても良いが、既にパスが通ってるところに置くのが楽

#!/bin/sh

URL='https://APIパス'

TEMP=$(mktemp /tmp/XXXXX.png)
WIDTH=800

if [ $# -eq 0 ]; 
    then screencapture -i ${TEMP}
else
    if [ $(identify -format %w ${1}) -gt ${WIDTH} ]; then
        CONVOPT="-resize ${WIDTH}"
    fi
    convert ${CONVOPT} ${1} $TEMP
fi

IMAGE=$(curl -s -H 'content-type: image/png' -H "x-api-key:${GYAZO_API_KEY}" --data-binary "@${TEMP}" -X POST ${URL})
if [ $? -eq 0 ]; then
    open ${IMAGE}
    echo ${IMAGE} | pbcopy
fi
rm -f ${TEMP}

次の4つを追加・変更

  • curl コマンドの引数にAPI KEYを追加
  • import コマンドを screencapture -i へ変更 [mac]
  • xclip -sel c を pbcopy でクリップボードへ送る [mac]
  • ブラウザで開くコマンドを gnome-www-browser から open へ変更 [mac]

stealth

https://hellostealth.orghellostealth.org

hellostealth.org

Build amazing chatbots with tools you know and love.

VOTコミュニティで紹介されていた。

コードは書いてないが、ドキュメント(英語)を音読してみた。 時間はかかるが、英語の学習にもなってちょうどいい。

Ruby on Rails ベースのツール。 Alexa対応のgemも用意されている。

Amazon Echo Dot を買ったので、試したい。

何時何分に(遅延して)喋らせる、ができるので、やりたいことができそう。