こんにちは。植松です。
弊社ではソースコードの管理を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の認証を進めてください。
認証途中に以下の画面が出るので、許可してください。
認証が終わると、Chatbotの設定済みクライアントにSlackのワークスペースが作成されるので、「新しいチャネルを設定」を押します。
私は以下の設定でチャネルを作成しました。
設定名 | notification-code-commit |
ログ記録 | 無効(料金がかかるので) |
チャネルタイプ | パブリック |
ロール設定 | チャネルロール |
チャネルロール | テンプレートを使用してIAMユーザーを作成する |
ロール名 | notification-code-commit-role |
ポリシーテンプレート |
通知のアクセス許可 |
ポリシー名 | ReadOnlyAccess |
リージョン | 東京 |
トピック |
codestar-notifications-slack-notice-code-commit-events |
3)稼働確認
作成が終わったらプルリクやプッシュなどを行ってみて通知がSlackに届けばOKです。
プッシュ
プルリク
承認
最後に
リポジトリが複数ある場合は、個別に通知ルールを設定する必要があります。
数が多いと手動も大変なので、CLIを使ってルール作成が楽かと思います。