0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Misskeyに定期投稿するbotをAWS LabmdaとEventBridgeで作る

Last updated at Posted at 2024-01-20

はじめに

サクッと作れます。
「イベント開催時までのカウントダウンをしてMisskeyを盛り上げたい」などにお役立てください。

技術

Python
AWS lambda
AWS EventBridge

作業手順

  1. misskeyでAPIキーを取得する
  2. Lambdaにアップロードするファイルを作る
  3. Lambdaの実行環境を整える
  4. EventBridgeで定期実行設定
  5. Lambdaにファイルをアップロードして動作確認

制作

1. misskeyでAPIキーを取得

  1. 設定 > API >アクセストークンの発行を押下
    image.png

  2. 全部許可しちゃう(適宜必要なものを許可すれば良い)
    image.png

  3. 確認コードが表示されるのでコピーしておく

2. Lambdaにアップロードするファイルを作る

  1. ローカル環境の作業用フォルダに移動
    $ cd path/to/work

  2. Misskeyはpipで作業用フォルダにインストールする
    $ pip3 install Misskey.py -t .

  3. 投稿したい内容をコーディング

    2024年1月20日までのカウントダウン
    from datetime import datetime
    from misskey import Misskey
    import os
    
    def lambda_handler(event, context):
      # インスタンス(サーバー)とアクセストークンを環境変数から取得
      mk = Misskey(os.environ['MISSKEY_INSTANCE'])
      mk.token = os.environ['MISSKEY_TOKEN']
      today = datetime.now()
    
      # 指定された日付+1を入力
      target_date = datetime(2024, 1, 21)
    
      # 日数の差を計算
      delta = target_date - today
    
      # 日数の差を返す
      mk.notes_create(text="2024年1月20日まであと" + str(delta.days) + "")
    
  4. Zipで圧縮
    $ zip -r upload.zip *

3. Lambdaの実行環境を整える

  1. AWSにログインし、画面の上にある 🔍 を押下しLambdaを入力後出てきた項目を選択
    image.png

  2. オレンジ色の関数の作成を押下
    image.png

  3. 任意の関数名を入力し、今回はPythonを使うので選択
    関数の作成を押下
    image.png

  4. インスタンス(サーバー)とアクセストークンを設定
     設定 > 環境変数 > 編集を押下
    image.png
    キーを設定して、保存を押下
    image.png

  5. + トリガーを追加を押下
    image.png

  6. EventBridgeを選択
    image.png

4. EventBridgeで定期実行設定

上でEventBridgeを選択すると、設定画面が表示されます。

  1. 今回は毎日午前7時に動かしたいのでcron(0 7 * * ? *)と記載しました。よくわからない方はお近くのAIに聞いてみてください。
    image.png

    公式ドキュメントにも記載がある通り、AWSのCronは以下のルールがあります。

    cron式の日フィールドと曜日フィールドを同時に指定することはできません。一方のフィールドに値(または *)を指定する場合、もう一方のフィールドで ?(疑問符) を使用する必要があります。

5. Lambdaにファイルをアップロードして動作確認

  1. 右側の アップロード元 > .zipファイルを押下して、先ほど圧縮したZIPファイルをアップロード
    image.png
  2. 同じ画面にある青色のTestボタンを押下し、実際に投稿されていれば完了
    image.png

参考記事

今後参考になりそうな記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?