こんにちは。植松です。

弊社ではソースコードの管理をAWSが提供するプライベートGitリポジトリサービスの「CodeCommit」を使っています。
ですが、CodeCommit単体で使っていると、誰がいつどのリポジトリを操作しているのかが全くわかりません。。
そこで、リポジトリイベントをAWS Chatbotを使ってSlackに通知する方法を紹介します。

なぜAWS Chatbot + Slackなのか

CodeCommitのイベントを通知する方法は、他にもAmazon SNSやAWS Lambdaを使う方法があります。
ですが、若干の費用がかかるという点で不採用としました。

弊社ではメインのコミュニケーションツールはGoogle Workspaceが提供するGoogle Chatですが、Slackも使っています。
AWS Chatbotは料金がかからないので、このサービスとSlackを組み合わせて無料で通知を行う仕組みを作りました。

事前準備

以下の準備を行います。説明は割愛します。

  • CodeCommitでリポジトリを作成
  • Slackのパブリックチャンネル(チャンネル名はnotice-code-commit-eventsとしました)を作成、通知させたいユーザーをチャンネルに追加
  • クライアント端末からリポジトリにアクセスできるように設定

1)CodeCommit通知ルール作成

AWSのコンソールから、CodeCommitを開き、通知したいリポジトリを選択して、「通知」>「通知ルールの作成」を押します。

私は以下の設定でルール作成しました。

通知名 notification_リポジトリ名
詳細タイプ フル
通知をトリガーするイベント 全部にチェック
ターゲットの作成 SNSトピック:
codestar-notifications-slack-notice-code-commit-events

2)AWS Chatbot設定

AWSのコンソールから、AWS Chatbotを開きます。

チャットクライアントを設定で、Slackを選択し、「クライアントの設定」を押します。

※AWS Chatbot が Slack ワークスペースにアクセスするためのアクセス権限をリクエストするために、Slack の認証ページにリダイレクトされます。 と表示されるので、画面に従ってSlackの認証を進めてください。

認証途中に以下の画面が出るので、許可してください。

img_448_1.png

認証が終わると、Chatbotの設定済みクライアントにSlackのワークスペースが作成されるので、「新しいチャネルを設定」を押します。

私は以下の設定でチャネルを作成しました。

設定名 notification-code-commit
ログ記録 無効(料金がかかるので)
チャネルタイプ パブリック
ロール設定 チャネルロール
チャネルロール テンプレートを使用してIAMユーザーを作成する
ロール名 notification-code-commit-role
ポリシーテンプレート

通知のアクセス許可
Resource Explorer のアクセス許可

ポリシー名 ReadOnlyAccess
リージョン 東京
トピック

codestar-notifications-slack-notice-code-commit-events
※先ほど通知ルール作成で作成したトピックを指定

3)稼働確認

作成が終わったらプルリクやプッシュなどを行ってみて通知がSlackに届けばOKです。

プッシュ
img_448_2.png

プルリク
img_448_3.png

承認
img_448_4.png

最後に

リポジトリが複数ある場合は、個別に通知ルールを設定する必要があります。
数が多いと手動も大変なので、CLIを使ってルール作成が楽かと思います。