- 純粋にRSSリーダーが欲しかった
- 巡回するサイトが増えてきて、毎朝ブラウザからアクセスするのがなかなか面倒だった
- VSCode Remote Containerを開発に導入してみる
- Lambdaのコンテナイメージサポートを使ってみる
- Cloudwatch Events利用によるLambda定期実行を試す
- AWSリソースから見やすいサービスに通知できるか試す(今回はDiscord)
- リポジトリをduplicate,cloneなどして自分のリポジトリにする
- この記事を参考にGithub ActionsでECRプッシュする設定を行う
- バージョン運用は一旦置いておくため、ECRにタグ付与する箇所はlatest固定にしています
- Lambdaを新規作成する。コンテナイメージ利用を選択し、↑のECRのURIを指定する
- この記事を参考に、↑のLambdaにEventbridgeによるトリガーを設定する
- 周期はデフォルトはrate(1 hour)。変更する場合はget_rssに渡すinterval値も合わせて変更すること
- この記事を参考に、以下2つをSystems Managerパラメータストアに配置する
- 送りたいDiscord-WebhookのURL
- 暗号化して配置したいので、先にKMSから暗号化キー(CMK)を作成して暗号化する
- RSS取得先リンク(改行で区切って列挙する)
- こちらは平文でOK
- 送りたいDiscord-WebhookのURL
- 5.の記事を参考に、3.LambdaのロールにSSM参照権限とCMKを利用した復号の権限を付与する
- SSM参照権限→SSMReadOnlyAccessでOK
- 後者はkms:Decrypt。AWS管理ポリシーに該当するものがないので自力でポリシーを作成する必要がある
- Pythonの場合ベースイメージにalpineを使うのはやめたほうがいい。
AWS公式のサンプルDockerfileがalpineだったので従ったが、buster系のほうが良いはず - ECRプッシュのトリガーにタグ使うのが若干面倒
- Eventbridgeの実行開始タイミングが不明
- 設定して1分くらいしたら勝手に動き始めたので普通に指定できない説が濃厚