What’s New with AWS? からコスト関連のニュースを Slack へ通知できる AWS Cost News Slack Bot をやってみた

コスト関連だけではなく What's New から設定したキーワードがタイトルに含まれる記事だけを Slack へ通知することも可能です
2024.05.29

AWS の最新情報が掲載される What's New with AWS? は AWS 利用者にとって重要な情報ソースの一つです。 RSS を利用して、最新情報をキャッチアップしている方もいらっしゃるのではないでしょうか。

先日、そんな What's New with AWS? から特定のキーワードがタイトルに含まれる記事だけを Slack へ通知するソリューションが紹介されていたので、やってみたいと思います。

記事の中で、今回のソリューションが必要な背景として "過去 6 か月間に 1,400 件を超える製品発表を行いました" と紹介されています。確かに全てをキャッチアップするのは困難ですね...

AWS published more than 1,400 product announcements in the last 6 months. About 10% were cost or efficiency related. To better understand the frequency of these announcements, Figure 2 shows the past 6 months of announcements in aggregate with all cost related announcements highlighted in yellow.

↓↓↓ 機械翻訳 ↓↓↓

AWS は過去 6 か月間に 1,400 件を超える製品発表を行いました。そのうち約 10% はコストまたは効率性に関するものでした。これらの発表の頻度をよりよく理解できるように、図 2 では過去 6 か月間の発表をまとめて示しており、コスト関連の発表はすべて黄色で強調表示されています。


引用: Improving your FinOps practice with real-time Slack notifications of AWS CFM announcements

プロセスとしては以下のようになっています。

  1. スケジュールされた期間で実行
  2. What's New の RSS を取得
  3. キーワードに該当するタイトルを持つ記事を抽出
  4. 既出記事か新記事かをチェック
  5. Slack ワークフローで通知


引用: Improving your FinOps practice with real-time Slack notifications of AWS CFM announcements

コードについては、下記に掲載されている内容がベースとなっているようです。

早速、冒頭のソリューション紹介記事を参考に作成していきます。

Slack ワークフローの準備

Slack チャンネルとワークフローを作成して、Webhook URL を取得します。
※ 詳細な手順は紹介記事をご参照ください

(設定した結果)

ソリューションのデプロイ

任意のリージョンで AWS CloudFormation を利用して aws-cost-optimization-news-and-announcements スタックを実行して、ソリューションを展開します。


引用: Improving your FinOps practice with real-time Slack notifications of AWS CFM announcements

準備としては、これで完了です。

今回は作成された AWS Lambda をテスト実行したところ、該当する記事が検出されて、下記が通知されてきました。簡単に用意が出来ました。

初期設定とカスタマイズ

これだけでも十分ではありますが、せっかくなのでキーワード(AWS Lambda)や実行タイミング(Amazon EventBridge)、通知フォーマット(Slack)の設定と変更箇所確認していきます。

キーワード(AWS Lambda)

設定するキーワードは Python 内のコードに記載されています。

If you have another RSS feed you wish to report to in Slack, follow the same steps but replace the key_words in the python code to filter for what you want to look for. Multiple deployments can help narrow announcements to teams focused on specific domains or services. Review your feed, share with stakeholders and continue to optimize!

↓↓↓ 機械翻訳 ↓↓↓

Slack でレポートする別の RSS フィードがある場合は、同じ手順に従いますが、検索対象をフィルターするために Python コードのkey_wordsを置き換えます。複数のデプロイメントにより、特定のドメインまたはサービスに重点を置くチームにアナウンスを絞り込むことができます。

デフォルトでは下記が設定されています。

・ cost
・ price
・ optimize
・ optimization
・ costs
・ prices
・ pricing
・ advisor
・ graviton
・ CFM
・ financial
・ finops
・ finance

# Just some sample keywords to search for in the title
key_words = ['cost','price','optimize','optimization','costs','prices','pricing','advisor', 'graviton','CFM','financial','finops','finance']

上記コードを修正することで、キーワード変更が可能ですが、せっかくなので環境変数にしてみます。

コードも合わせて変更します。

# Just some sample keywords to search for in the title
### key_words = ['cost','price','optimize','optimization','costs','prices','pricing','advisor', 'graviton','CFM','financial','finops','finance']
key_words = os.environ['KEYWORDS'].split(',')

こうしておけば、環境変数を変更することで、キーワードを変更することが可能です。コスト関連のキーワードを設定することも出来ますね。

実行タイミング(Amazon EventBridge)

チェックが実行されるタイミングは Amazon EventBridge で設定がされています。デフォルトでは日次で実行がされます。

Amazon EventBridge → ルール → RSSLambdaCloudWatchTrigger

例えば、毎週月曜日 AM 09:00 に変更する場合は下記のように変更します。

通知フォーマット(Slack)

Slack ワークフローの設定画面で通知する内容の選択、文言や絵文字を追加がカスタマイズできます。

さいごに

今回は、What's New With AWS? から特定のキーワードがタイトルに含まれる記事を Slack で通知してくれるソリューションを実際にやってみました。日々アップデータがされていく AWS を利用する上では重要な情報ソースですが、毎回人手で確認するのも大変なので、こういったソリューションを活用することで負荷を下げることが出来そうですね。またキーワードや実行タイミングを変更することも出来るため、自分やチームに合わせた内容に調整出来るのも嬉しいですね。