0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】CodeCommitのプルリクエストをSlack通知する【開発支援】

Last updated at Posted at 2023-12-03

はじめに

過去の記事(https://qiita.com/Nana_777/items/a1c082dc9f2507cb1290)
ではSlackへのStepFunctionsのアラート通知を記事にしたが、今回はCodeCommitのプルリクエストをSlackへ通知する方法を記事にしました。
複数のチームで開発を行っていたり、コードのマージの申請と承認の担当者が異なる場合にプルリクエストを出された後にそのことの共有が忘れられていつまでもマージされないなどの問題が発生するため、その対策としても有効にります。

使うAWSサービス

・AWS CodeCommit
・Amazon SNS
・AWS Lambda

アーキテクチャ図

CodeCommit-SNS.png

構築手順

1.AWS Lambda関数の作成
・SNSトピックからメッセージを作成してSlackに送信するLambda関数を作成する
<コード例>
※送信内容は要件によって要調整(この例ではタイトルと作成者、プルリクエストのURLをメッセージにして送信している)

sample.py
import json
import requests

def lambda_handler(event, context):
    sns_message = json.loads(event['Records'][0]['Sns']['Message'])

    # プルリクエスト情報の取得
    title = sns_message['title']
    description = sns_message['description']
    pull_request_url = sns_message['pullRequestUrl']
    created_by = sns_message['createdBy']

    # Slackへの通知処理
    slack_url = '【SlackのURL】'
    slack_payload = {
        'text': f"New Pull Request: {title} - {description}\n"
                f"Created by: {created_by}\n"
                f"Pull Request URL: {pull_request_url}"
    }

    response = requests.post(slack_url, json=slack_payload)
    return {
        'statusCode': response.status_code,
        'body': response.text
    }

2.SNSトピック作成とサブスクライブ設定
①SNSトピックを作成する
SNSトピック作成2.PNG
②サブスクリプションを作成する
・①で作成したSNSトピックを選択してサブスクリプションを作成する
SNSサブスクリプションの作成.PNG
・SNS通知の通知先に1で作成したLambdaを指定する
SNSサブスクリプションの作成_2.PNG

3.AWS CodeCommitのイベント通知の設定
①通知を行いたいリポジトリを選択して「通知ルールの作成」を選択する
CodeCommit通知の作成1.PNG
②通知をトリガーするイベントで「Pull request > Created」を選択する
CodeCommit通知の作成2.PNG
③ターゲットで2で作成したSNSトピックを選択する
CodeCommit通知の作成3.PNG

さいごに

プルリクエストの承認作業依頼は申請者が手作業で個人的にメッセージを承認者に出せばそれで事足りるが、毎回そのメッセージを作成して送るのは手間がかかります。
手作業の運用にするとメッセージの送り忘れの可能性もあります。
そこでプルリクエストの内容をLambdaであらかじめカスタマイズした定型文で送ることでその手間と送り忘れを防ぐことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?