2024年8月2日にリリースされた Terraform AWS Provider v5.61.0 で AWS Chatbot の「Slack 設定 (SlackChannelConfiguration
)」と「Teams 設定 (MicrosoftTeamsChannelConfiguration
)」を設定できるようになった❗️
背景
今までは AWS Provider を使って AWS Chatbot を構築できず,AWS Provider 側の issue は2020年3月から Open していた.
とは言え AWS Provider は AWS SDK for Go に依存していて,AWS SDK for Go で AWS Chatbot がサポートされていないという点が根本的な問題ではあった.
そして,2024年2月に AWS SDK for Go が AWS Chatbot をサポートしたため,AWS Provider もサポートできるようになったという背景がある.
今まで
Slack を例にすると,今までは以下のようなワークアラウンドを選択して AWS Chatbot を構築していたと思う.
- マネジメントコンソールで構築する
- AWS CloudFormation の AWS::Chatbot::SlackChannelConfiguration で構築する
- Terraform AWS Provider の aws_cloudformation_stack で構築する
- AWS Cloud Control Provider (awscc) の awscc_chatbot_slack_channel_configuration で構築する
仕事では AWS Cloud Control Provider (awscc) を導入していて,過去にブログにもまとめてある📝
Terraform コード
さっそく AWS Provider でサポートされた aws_chatbot_slack_channel_configuration リソースを試す👌 以下のように実装した.IAM Role と Amazon SNS トピックは省略する.
resource "aws_chatbot_slack_channel_configuration" "main" { configuration_name = "sandbox" iam_role_arn = aws_iam_role.chatbot.arn slack_team_id = "XXXXXXXXX" slack_channel_id = "XXXXXXXXX" sns_topic_arns = [aws_sns_topic.chatbot.arn] }
簡単だ \( 'ω')/
動作確認
AWS Chatbot の「テストメッセージを送信」と Amazon SNS の「メッセージの発行」を実行して,期待通り Slack に通知された👏
ちなみに Amazon SNS から送信するときは以下のドキュメントを参考にカスタムフォーマットを使った.
{ "version": "1.0", "source": "custom", "content": { "description": ":tada: Terraform AWS Provider v5.61.0 now supports the `aws_chatbot_slack_channel_configuration` resource! yay!" } }
補足: SlackWorkspaceId
と SlackTeamId
Slack Workspace ID を指定するときに,AWS Cloud Control Provider (awscc) の場合は AWS CloudFormation のリソースに対応しているため SlackWorkspaceId
を設定するけど,AWS Provider の場合は slack_team_id
を設定するという違いがあった.ちなみに AWS Chatbot API のリクエストパラメータは SlackTeamId
になっていた.
ポスト
Terraform AWS Provider v5.61.0 で AWS Chatbot (aws_chatbot_slack_channel_configuration) のサポートが入ってる💡ついにだ〜
— カック (@kakakakakku) 2024年8月1日