Slide 1

Slide 1 text

Twitter Botを作ってカスタマイズと トラブルシュートをした話 2022/7/6 JAWS-UG 朝会 #35

Slide 2

Slide 2 text

自己紹介 名前 :藤田 直幸 Twitter :@amarelo_n24(コーヒー焙煎人兼エンジニア) Facebook:https://www.facebook.com/naoyuki.fujita.37 取得済AWS認定 :CLF、SAA、DVA、SCS 好きなAWSサービス:AWS CLI、AWS CloudShell、Cloud9 好きなコーヒー豆 :ブラジル ブルボンアマレロ

Slide 3

Slide 3 text

1.builders.flash とは? 2.作成したTwitter Botの概要 3.カスタマイズポイント 4.トラブルシューティング 5.まとめ 話すこと

Slide 4

Slide 4 text

1. builders.flash とは?

Slide 5

Slide 5 text

変化を求めるデベロッパーの皆様へ楽しみながら実践的に学べる トピックをお届けする AWS のウェブマガジンです。 ・デベロッパーの方が持つ悩みや不安に対するヒントとなる様々なテクノロジーの解説 ・課題解決を AWS を活用しながら行う方法 ・デベロッパーインタビュー ・テクノロジーを日常の中で楽しむ体験記 ・学校における最新のテクノロジー教育への取り組み ※抜粋 https://aws.amazon.com/jp/builders-flash/about/?awsf.filter-name=*all builders.flash とは?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

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 ドリル

Slide 9

Slide 9 text

2.作成したTwitter Botの概要

Slide 10

Slide 10 text

構成図

Slide 11

Slide 11 text

EventBridgeを使って自動投稿 Cron式で毎朝7時に実行

Slide 12

Slide 12 text

Systems Manager Parameter StoreにTwitter APIのKeyとTokenを保存 SecureStringで保存。

Slide 13

Slide 13 text

Systems Manager Parameter Storeに曜日ごとのメッセージを保存 曜日ごとに異なった文言 を入れてツイート

Slide 14

Slide 14 text

DynamoDBにツイート内容を格納

Slide 15

Slide 15 text

EveryDayCoffeeTweet_β @EVDY_Coffee_TWT ツイート結果

Slide 16

Slide 16 text

3.カスタマイズポイント

Slide 17

Slide 17 text

ツイートするコーヒー豆を毎日変えたい 要件 ・アイテムが増えても、コード変更せずにツイートに 使えるようにしたい。 ・アイテムの追加頻度と量はそれ程ではないため、 自動化まではしなくて良い。

Slide 18

Slide 18 text

パーティションキーを単純な数字に変更

Slide 19

Slide 19 text

DynamoDBの項目数を取得

Slide 20

Slide 20 text

ランダムで取得した値をキー参照してツイート 1~レコード数でランダム値を取 得。それをキーにしてツイートす るコーヒー豆をDynamoDBから取 得してツイートする。

Slide 21

Slide 21 text

ツイートする豆の種類が毎日変わったことを確認 ランダムに抽出するので、同 じコーヒー豆が2日連続で出 ることももちろんある。

Slide 22

Slide 22 text

アイテム追加、手動でやるのめんどくさい

Slide 23

Slide 23 text

アイテム追加をAWS CLIで aws dynamodb batch-write-item で読み込むJSONファイルを指定して実行。 “UnprocessedItems”:{} と表示されれば成功 事前にJSONファイルをアップ ロードしておく。

Slide 24

Slide 24 text

JSON書くのも大変…悩ましい… ひとまずExcel関数を駆使して作成。 batch-write-itemコマンドとJSON作成 については、以下をご参照ください。 https://speakerdeck.com/amarelo_n2 4/dynamodbteburuniawsclideaitemu wo-gua-deng-lu-surufang-fa 読み込ませたJSONファイル

Slide 25

Slide 25 text

追加データが使われたことも確認

Slide 26

Slide 26 text

4.トラブルシューティング

Slide 27

Slide 27 text

いつもの時間にツイートされていなかった。 EventBridgeの設定もLambdaのコードも変えていないのに… 7/1の朝

Slide 28

Slide 28 text

CloudWatch Logsで調査 Task timed out ???

Slide 29

Slide 29 text

正常時のログイベント

Slide 30

Slide 30 text

Twitter APIに障害が発生していたことが分かった。 翌日はちゃんとツイートしていた。 いろいろ調べてみたが…

Slide 31

Slide 31 text

ログイベントも問題なし

Slide 32

Slide 32 text

5.まとめと今後やってみたいこと

Slide 33

Slide 33 text

・builders.flashを参考にTwitter Bot 作ってみた話をしました。 ・やはりもっとコード書けるようになって、もっと効果的な Twitter Botにしたいと思った!! ・DynamoDBにアイテムを一括で追加する効率的な方法を もう少し検討したい。 ・この登壇までの間に、TwitterAPIが落ちた時の動作を 知れたのは良かった(?) まとめ

Slide 34

Slide 34 text

・気温情報を取得し、気温によるツイート内容変化 - 暑い日はアイスコーヒーそれ以外はホットコーヒーを推奨。 - さらに、夏は水分補給の促進、冬は換気の促進も。 ※去年作った水分補給アラートをアップデートしたい。 ・一定期間、特定文言のツイートしてなかったら通知 - 焙煎に関するツイートしてなかったら:「焙煎の調子はどう?」 - AWSに関するツイートしてなかったら:「次の認定試験頑張ろう!」 など・・・AWSドリル第6回と7回が参考になりそう。 今後やってみたいこと

Slide 35

Slide 35 text

No content