Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Twitter Botを作ってカスタマイズとトラブルシュートをした話

Twitter Botを作ってカスタマイズとトラブルシュートをした話

2022/7/6 JAWS-UG朝会 #35 登壇資料

Dc20c893cac0daddd607dfc9a5855d27?s=128

amarelo_n24

July 06, 2022
Tweet

More Decks by amarelo_n24

Other Decks in Technology

Transcript

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

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

    CLI、AWS CloudShell、Cloud9 好きなコーヒー豆 :ブラジル ブルボンアマレロ
  3. 1.builders.flash とは? 2.作成したTwitter Botの概要 3.カスタマイズポイント 4.トラブルシューティング 5.まとめ 話すこと

  4. 1. builders.flash とは?

  5. 変化を求めるデベロッパーの皆様へ楽しみながら実践的に学べる トピックをお届けする AWS のウェブマガジンです。 ・デベロッパーの方が持つ悩みや不安に対するヒントとなる様々なテクノロジーの解説 ・課題解決を AWS を活用しながら行う方法 ・デベロッパーインタビュー ・テクノロジーを日常の中で楽しむ体験記

    ・学校における最新のテクノロジー教育への取り組み ※抜粋 https://aws.amazon.com/jp/builders-flash/about/?awsf.filter-name=*all builders.flash とは?
  6. None
  7. None
  8. 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 ドリル
  9. 2.作成したTwitter Botの概要

  10. 構成図

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

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

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

  14. DynamoDBにツイート内容を格納

  15. EveryDayCoffeeTweet_β @EVDY_Coffee_TWT ツイート結果

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

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

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

  19. DynamoDBの項目数を取得

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

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

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

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

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

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

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

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

  28. CloudWatch Logsで調査 Task timed out ???

  29. 正常時のログイベント

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

  31. ログイベントも問題なし

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

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

    まとめ
  34. ・気温情報を取得し、気温によるツイート内容変化 - 暑い日はアイスコーヒーそれ以外はホットコーヒーを推奨。 - さらに、夏は水分補給の促進、冬は換気の促進も。 ※去年作った水分補給アラートをアップデートしたい。 ・一定期間、特定文言のツイートしてなかったら通知 - 焙煎に関するツイートしてなかったら:「焙煎の調子はどう?」 -

    AWSに関するツイートしてなかったら:「次の認定試験頑張ろう!」 など・・・AWSドリル第6回と7回が参考になりそう。 今後やってみたいこと
  35. None