AWS Chatbotを使ってSlackのプライベートチャンネルに連携できないときの対処方法

AWS Chatbot、Slackのプライベートチャンネルに連携しようとしたときにハマった小ネタです。
2020.05.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

先日、めでたくGA(一般公開)されたAWS Chatbot、皆さん使っていますか?

特にLambdaなどのコーディングは必要なく、AWS上の様々なイベントをSlackにノンコーディングで連携できる非常に便利なサービスなのですが、Slackへのプライベートチャンネルへの連携で、結構はまったので共有です。

まぁ「ドキュメントちゃんと読んどけよ」という話ではあるんですが、検索してもそれっぽい情報がでてこずそれなりにハマってしまったので、インデックス目的で、記事作成しておきます。

もう同じことでハマる人いないの?

  ( ゚д゚) ガタッ
  /   ヾ
__L| / ̄ ̄ ̄/_
  \/   /

そう願ってます。

AWS Chatbotを使ったSlack連携の流れ

パブリックチャンネルに連携する場合の大まかな流れは、下記藤井の記事をご参考ください。

大雑把な手順は以下の通り。

  • SNS Topicの作成
  • 連携用Slackチャンネル作成
  • Chat Botの作成
    • Slack WorkSpaceとの連携
    • 連携先チャンネルの指定
    • Chat BotへのIAMロール付与
    • SNS Topicの紐付け

ただ、上記手順で進めていったときに、Slackのパブリックチャンネルには連携されるが、プライベートチャンネルには連携されないという問題が発生しました。

AWS Chatbotはその動作ログをCloudWatch Logsに出力する機能があるんですが、エラーログを見てみるとこんな状態です。

Encountered error while sending message to Slack: Slack Web API returned unsuccessful response (HTTP status code: 200, ok: false, error code: channel_not_found, full response body: 
{
    "ok": false,
    "error": "channel_not_found"
}
).

なんか、権限周辺でエラーになっているっぽい。のでIAMロールなどを見直してみたんですが、問題なさそうでハマることに。

解決方法は、連携先SlackチャンネルへのAWSユーザーのInvite

詳細は、公式ドキュメントに記載があります。

Getting started with AWS Chatbot - AWS Chatbot

If you configure a private Slack channel, run the /invite @AWS command in Slack to invite the AWS Chatbot to the chat room.
引用:Getting started with AWS Chatbot - AWS Chatbot

というわけで、プライベートチャンネルへ連携する場合は、別途チャンネルにAWSユーザーをinviteする必要があったというわけです。

こんな感じでコマンドうつと、そのチャンネルにAWSユーザーが招待されます。

後は、動かしてみてパブリックチャンネルと同じように通知されればOK。

AWS Chatbot、使えるところたくさんあるので、どんどこ使いましょう

AWS Chatbot、CloudWatch Alarmの通知の場合、メール連携では確認できないような、メトリクスのグラフも通知先で見えたりとか、Lambdaが不要というアドバンテージ以上に通知の見える化、利便性に大いに使えるので、みなさんもどんどん使ってみてはいかがでしょうか。

それでは、今日はこのへんで。濱田(@hamako9999)でした。