2022/7/6 JAWS-UG朝会 #35 登壇資料
Twitter Botを作ってカスタマイズとトラブルシュートをした話2022/7/6JAWS-UG 朝会 #35
View Slide
自己紹介名前 :藤田 直幸Twitter :@amarelo_n24(コーヒー焙煎人兼エンジニア)Facebook:https://www.facebook.com/naoyuki.fujita.37取得済AWS認定 :CLF、SAA、DVA、SCS好きなAWSサービス:AWS CLI、AWS CloudShell、Cloud9好きなコーヒー豆 :ブラジル ブルボンアマレロ
1.builders.flash とは?2.作成したTwitter Botの概要3.カスタマイズポイント4.トラブルシューティング5.まとめ話すこと
1. builders.flash とは?
変化を求めるデベロッパーの皆様へ楽しみながら実践的に学べるトピックをお届けする AWS のウェブマガジンです。・デベロッパーの方が持つ悩みや不安に対するヒントとなる様々なテクノロジーの解説・課題解決を AWS を活用しながら行う方法・デベロッパーインタビュー・テクノロジーを日常の中で楽しむ体験記・学校における最新のテクノロジー教育への取り組み※抜粋https://aws.amazon.com/jp/builders-flash/about/?awsf.filter-name=*allbuilders.flash とは?
2022/7/4現在、以下の記事が公開されています。これらの記事を参考にTwitter Bot を作りました。第1回 おはようBot編第2回 昔書いた記事の宣伝 Bot 編第3回 リファクタリング & 曜日ごとのツイート 編第4回 新章突入 ! 気になるワード検索 & 通知 Bot 編第5回 皆さまの代わりに英語でツイートしておくよ Bot 編第6回 AWS Step Functions を使って Well-being Bot を作ろう ! (前編)第7回 AWS Step Functions を使って Well-being Bot を作ろう ! (後編)お役立ち Twitter Bot を作りながら学ぶ AWS ドリル
2.作成したTwitter Botの概要
構成図
EventBridgeを使って自動投稿Cron式で毎朝7時に実行
Systems Manager Parameter StoreにTwitter APIのKeyとTokenを保存SecureStringで保存。
Systems Manager Parameter Storeに曜日ごとのメッセージを保存曜日ごとに異なった文言を入れてツイート
DynamoDBにツイート内容を格納
EveryDayCoffeeTweet_β @EVDY_Coffee_TWTツイート結果
3.カスタマイズポイント
ツイートするコーヒー豆を毎日変えたい要件・アイテムが増えても、コード変更せずにツイートに使えるようにしたい。・アイテムの追加頻度と量はそれ程ではないため、自動化まではしなくて良い。
パーティションキーを単純な数字に変更
DynamoDBの項目数を取得
ランダムで取得した値をキー参照してツイート1~レコード数でランダム値を取得。それをキーにしてツイートするコーヒー豆をDynamoDBから取得してツイートする。
ツイートする豆の種類が毎日変わったことを確認ランダムに抽出するので、同じコーヒー豆が2日連続で出ることももちろんある。
アイテム追加、手動でやるのめんどくさい
アイテム追加をAWS CLIでaws dynamodb batch-write-itemで読み込むJSONファイルを指定して実行。“UnprocessedItems”:{} と表示されれば成功事前にJSONファイルをアップロードしておく。
JSON書くのも大変…悩ましい…ひとまずExcel関数を駆使して作成。batch-write-itemコマンドとJSON作成については、以下をご参照ください。https://speakerdeck.com/amarelo_n24/dynamodbteburuniawsclideaitemuwo-gua-deng-lu-surufang-fa読み込ませたJSONファイル
追加データが使われたことも確認
4.トラブルシューティング
いつもの時間にツイートされていなかった。EventBridgeの設定もLambdaのコードも変えていないのに…7/1の朝
CloudWatch Logsで調査Task timed out ???
正常時のログイベント
Twitter APIに障害が発生していたことが分かった。翌日はちゃんとツイートしていた。いろいろ調べてみたが…
ログイベントも問題なし
5.まとめと今後やってみたいこと
・builders.flashを参考にTwitter Bot 作ってみた話をしました。・やはりもっとコード書けるようになって、もっと効果的なTwitter Botにしたいと思った!!・DynamoDBにアイテムを一括で追加する効率的な方法をもう少し検討したい。・この登壇までの間に、TwitterAPIが落ちた時の動作を知れたのは良かった(?)まとめ
・気温情報を取得し、気温によるツイート内容変化- 暑い日はアイスコーヒーそれ以外はホットコーヒーを推奨。- さらに、夏は水分補給の促進、冬は換気の促進も。※去年作った水分補給アラートをアップデートしたい。・一定期間、特定文言のツイートしてなかったら通知- 焙煎に関するツイートしてなかったら:「焙煎の調子はどう?」- AWSに関するツイートしてなかったら:「次の認定試験頑張ろう!」など・・・AWSドリル第6回と7回が参考になりそう。今後やってみたいこと