📝

[小ネタ] AWS Chatbot の Slack ワークスペース作成を自動化できない話

2025/01/20に公開

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 としては提供されていませんでした。

Actions, resources, and condition keys for AWS Support App in Slack - Service Authorization Reference

RedeemSlackOauthCode [permission only]

Slack ワークスペースの設定に関するドキュメントでもコンソールから操作する手順のみ記載されていました。
Tutorial: Get started with Slack - AWS Chatbot

コンソールからワークスペースを認証した後に上記テンプレートをデプロイすればチャネルが作成されることは確認できました。

以上より、AWS Chatbot の Slack ワークスペース作成を自動化することはできませんでした。

まとめ

今回は AWS Chatbot の Slack ワークスペース作成を自動化できない話を紹介しました。
どなたかの参考になれば幸いです。

参考資料

Discussion