【Terraform】ChatbotからSlackへの通知構成を構築してみた|DeviceEcOnOmy(デバイスエコノミー)ITの役立つ情報を発信中。今回はTerraformを用いて、Chatbotの通知構成(GuardDutyの検知をSlackチャンネルに通知する構成)を構築する方法をご紹介します。Terraformで構築する対象は、GuardDuty、EventBridge、SNS、Chatbotです。※サービス連携に必要なIAMリソースを含みます。前提Terraformで構築を進めていく上での前提は以下です。Terraformのバージョン筆者が使用したTerraformのバージョン情報は次のとおりです。4.2.0手動でしておく作業Slackチャンネルの作成Slackにて、GuardDutyの検知結果を通知するためのSlackチャンネルを作成しておきます。※チャンネル名は任意。ChatbotへSlackワークスペースIDの連携AWSマネジメントコンソールにて、ChatbotとSlackワークスペースの連携を実施しておきます。Chatbotの画面で「新しいクライアントを設定」をクリックします。「Slack」を選択して「設定」をクリックします。Slackにて、「アプリを追加する」をクリックし、検索ボックスで、「aws」と入力します。Chatbot」が自動で追加されていることを確認します。AWSマネジメントコンソールに戻り、Chatbotの画面を確認します。Slackワークスペースが連携され、ワークスペースIDが取得されていることを確認します。構築手順Terraformのコード準備Terraform作業環境にて、以下のGitHubリポジトリをクローンします(コピーでも可)。https://github.com/dogharasu/terraform-chatbot-guardduty「terraform/terraform-config.tf」にて、Terraformのバックエンド用S3バケット名およびDynamoDBテーブル名に書き換えます。※S3バケット・DynamonDBが未構築の場合は、以下記事をご参照ください。【Terraform】tfstateファイルをAWSのS3・DynamoDBで管理する今回は、Terraformのtfstateファイル(以下stateファイル)をAWSのS3・DynamoDBで管理する方法をご紹介します...「terraform/main.tf」を開き、ファイル最下部のChatbot定義にて、SlackのチャンネルID、ワークスペースIDを入力します。※チャンネルIDは、Slackを開き、該当チャンネル名を右クリックして「チャンネル詳細を表示する」をクリックすると表示されます。※ワークスペースIDは手動でしておく作業の最後の手順で確認したIDです。「terraform/policy/sns.json」を開き、リソースを構築するAWSアカウント番号を記入します。initを実行します。initを実行している場合でもコマンド実行が必要です。※ChatbotはTerraformで直接構築できないため、Terraform→CloudFormation→Chatbotの流れで構築するためのモジュールを利用します。applyを実行して、構成図のリソースをデプロイします。動作確認Terraformで構築されたEventBridgeルールを開き、「編集」をクリックします。Finding」を選択して、「コピー」をクリックします。Terraformで構築されたSNSトピックを開き、「メッセージの発行」をクリックします。メッセージ本文にEventBridgeでコピーしていた内容をそのままペーストします。メッセージ属性は「削除」をクリックして、「メッセージの発行」をクリックします。Terraformで構築したChatbotによって、指定したSlackチャンネルに通知がきていることを確認します。まとめ今回は、TerraformでChatbotの通知構成を構築する方法をご紹介しました。Chatbotについては一般公開されているモジュールを使用することで、Terraformで構築することができます。筆者が参考にした記事(後述の参考情報)では、Chatbotの設定値について分かりやすくまとめられていました。この記事を通して、少しでもTerraform利用のお役に立てれば幸いです。しょう)AWSやガジェット漁りにハマっている系ITエンジニア。最近は特にTerraformが好きです。有益な情報発信に粛々と努めています。DeviceEcOnOmy(デバイスエコノミー)。