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

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

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

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

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

    View Slide

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

    View Slide

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

    View Slide

  4. 1. builders.flash とは?

    View Slide

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

    View Slide

  6. View Slide

  7. View Slide

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

    View Slide

  9. 2.作成したTwitter Botの概要

    View Slide

  10. 構成図

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. DynamoDBの項目数を取得

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  35. View Slide