Amazon SNSとAWS Chatbotを使用して、AWS CodePipelineの実行結果をSlackに通知します。

Amazon SNS トピックを作成

まずは、Amazon SNSでトピックを作成します。
トピックの作成」をクリックし、トピック名を入力します。

次に、アクセスポリシーのオプションから高度なメソッドを選択し、JSONエディタを編集します。
AWSアカウントIDトピック名は、各自のものを入力してください。

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:Publish",
        "SNS:RemovePermission",
        "SNS:SetTopicAttributes",
        "SNS:DeleteTopic",
        "SNS:ListSubscriptionsByTopic",
        "SNS:GetTopicAttributes",
        "SNS:Receive",
        "SNS:AddPermission",
        "SNS:Subscribe"
      ],
      "Resource": "arn:aws:sns:ap-northeast-1:AWSアカウントIDを入力:トピック名を入力",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "AWSアカウントIDを入力"
        }
      }
    },
    {
      "Sid": "AWSCodeStarNotifications_publish",
      "Effect": "Allow",
      "Principal": {
        "Service": "codestar-notifications.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:ap-northeast-1:AWSアカウントIDを入力:トピック名を入力"
    }
  ]
}

参考:Configure Amazon SNS Topics for Notifications

CodePipelineの通知ルールを作成

通知したいパイプラインを選択し、「通知」から「通知ルールの作成」を選択します。

通知ルールの作成画面に移行するので、「通知名」と「通知をトリガーするイベント」を設定します。

さらに、「ターゲット」を設定します。Amazon SNSで作成したトピックを選択します。

AWS Chatbotを設定

ChatbotとSlackを連携します。
Chatbotのコンソールの「チャットクライアントを設定」から「Slack」を選択し「クライアントを設定」をクリックします。

権限の確認画面が出るので、「許可する」をクリックします。

次に、「設定済みクライアント」から先ほど許可したSlackワークスペースを選択し、「新しいチャンネルを設定」をクリックします。

設定名と通知したいSlackのチャンネルを選択します。

「アクセス許可」でロール名を入力します。「通知」では、作成したSNSトピックとリージョンを選択します。

Pipeline実行時にSlackに通知が行われていることが確認できれば完成です。