[小ネタ] AWS Chatbot の Slack ワークスペース作成を自動化できない話
AWS Chatbot の Slack ワークスペース作成用の API が提供されていないという話です。
背景
AWS Organizations に新規アカウントを登録したら CloudFormation スタックセットで Chatbot の設定を自動化しようと考えていました。
AWS CloudFormation StackSets および AWS Organizations - AWS Organizations
自動デプロイを有効にすると、今後その OU に追加されるすべてのアカウントにロールと関連するスタックセットインスタンスのデプロイが自動的に追加されるようになります。
試したこと
Chatbot のワークスペースを作成せずに以下の CloudFormation テンプレートを実行しました。
AWSTemplateFormatVersion: 2010-09-09
Resources:
Chatbot:
Type: AWS::Chatbot::SlackChannelConfiguration
Properties:
ConfigurationName: sample
IamRoleArn: arn:aws:iam::012345678901:role/service-role/AWSCodeStarNotifications-Chatbot-Slack-Role
SlackWorkspaceId: xxx
SlackChannelId: xxx
ところが、CloudFormation スタックの作成中に以下のエラーが発生しました。
Resource handler returned message: "Invalid request provided: AWS Chatbot can't create the configuration because Slack workspace xxx is not authorized with AWS account 012345678901. See https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#slack-client-setup
上記エラーは Slack ワークスペースを認証できていないことが原因でした。
そこで、ワークスペースの認証方法を調査したのですが、CloudFormation や SDK では該当する API が提供されていませんでした。
コンソールからワークスペースを認証した際の記録を CloudTrail で調べたところ、RedeemSlackOauthCode というアクションが記録されていました。
しかし、RedeemSlackOauthCode はアクセス許可のみがサポートされており、API としては提供されていませんでした。
RedeemSlackOauthCode [permission only]
Slack ワークスペースの設定に関するドキュメントでもコンソールから操作する手順のみ記載されていました。
Tutorial: Get started with Slack - AWS Chatbot
コンソールからワークスペースを認証した後に上記テンプレートをデプロイすればチャネルが作成されることは確認できました。
以上より、AWS Chatbot の Slack ワークスペース作成を自動化することはできませんでした。
まとめ
今回は AWS Chatbot の Slack ワークスペース作成を自動化できない話を紹介しました。
どなたかの参考になれば幸いです。
Discussion