例: Amazon SNS トピック用の AWS CodeCommit トリガーを作成する - AWS CodeCommit

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

例: Amazon SNS トピック用の AWS CodeCommit トリガーを作成する

CodeCommit リポジトリのトリガーを作成して、そのリポジトリのイベントが Amazon Simple Notification Service (Amazon SNS) トピックからの通知をトリガーするようにできます。リポジトリイベント (ブランチの削除など) に関する通知をユーザーが受信できるようにするには、Amazon SNS トピックへのトリガーを作成することをお勧めします。Amazon SNS トピックと、Amazon Simple Queue Service (Amazon SQS) や AWS Lambda などの他のサービスとの統合を利用することもできます。

注記
  • このトリガーは、リポジトリイベントに応答して実行されるアクションとなる既存の Amazon SNS トピックにポイントする必要があります。Amazon SNS トピックの作成とサブスクライブの詳細については、Amazon Simple Notification Service 入門ガイドを参照してください。

  • Amazon SNS FIFO (先入れ先出し) トピックは、 CodeCommit トリガーではサポートされていません。

リポジトリの Amazon SNS トピック CodeCommitへのトリガーを作成する (コンソール)

  1. https://console.aws.amazon.com/codesuite/codecommit/home で CodeCommit コンソールを開きます。

  2. リポジトリで、リポジトリイベントのトリガーを作成するリポジトリを選択します。

  3. リポジトリのナビゲーションペインで、[設定] を選択し、[トリガー] を選択します。

  4. [トリガーの作成] を選択してから、次の操作を行います。

    • 「トリガー名」に、トリガーの名前 (例: ) を入力しますMyFirstTrigger

    • [イベント] で、Amazon SNS トピックをトリガーして通知を送信するリポジトリイベントを選択します。

      [すべてのリポジトリイベント] を選択すると、他のイベントは選択できません。イベントのサブセットを選択するには、[すべてのリポジトリイベント] の選択を解除し、リストから 1 つ以上のイベントを選択します。たとえば、ユーザーが CodeCommit リポジトリにタグやブランチを作成した場合にのみトリガーを実行するには、[すべてのリポジトリイベント] の選択を解除し、次に [ブランチまたはタグを作成する] を選択します。

    • トリガーをリポジトリのすべてのブランチに適用する場合は、[ブランチ] で選択を空白のままにします。このデフォルトのオプションでは、トリガーがすべてのブランチに自動的に適用されます。このトリガーを特定のブランチにのみ適用する場合は、リポジトリブランチのリストから最大 10 個のブランチ名を選択します。

    • [Choose the service to use (使用するサービスを選択する)] で、[Amazon SNS] を選択します。

    • [Amazon SNS] で、一覧からトピック名を選択するか、トピックの ARN を入力します。

      注記

      Amazon SNS FIFO (先入れ先出し) トピックは、 CodeCommit トリガーではサポートされていません。タイプが Standard (標準) に設定されている Amazon SNS トピックを選択する必要があります。Amazon SNS FIFO トピックを使用する場合は、SNS FIFO トピックがターゲットとして設定されている CodeCommit イベントの Amazon Eventbridge ルールを設定する必要があります。

    • [カスタムデータ] では、Amazon SNS トピックから送信される通知に含めるオプションの情報 (開発者がこのリポジトリで開発について検討するときに使用する IRC チャネル名など) を指定します。このフィールドは文字列です。これは動的パラメータを渡すために使用することはできません。

  5. (オプション) [トリガーのテスト] を選択します。このステップは、 CodeCommit と Amazon SNS トピック間のアクセスが正しく設定されていることを確認するのに役立ちます。このステップでは、Amazon SNS トピックでリポジトリのデータを使用してテスト通知を送信します。実際のデータがない場合は、テスト通知サンプルデータが使用されます。

  6. [Create trigger (トリガーを作成する)] を選択して、トリガーの作成を完了します。

CodeCommit リポジトリの Amazon SNS トピックへのトリガーを作成する (AWS CLI)

コマンドラインを使用して、ユーザーがコミットを CodeCommit リポジトリにプッシュする場合など、リポジトリイベントに応じて Amazon SNS トピックのトリガーを作成することもできます。

Amazon SNS トピック用のトリガーを作成するには
  1. プレーンテキストエディタを開き、次を指定する JSON ファイルを作成します。

    • Amazon SNS トピック名。

      注記

      Amazon SNS FIFO (先入れ先出し) トピックは、 CodeCommit トリガーではサポートされていません。タイプが Standard (標準) に設定されている Amazon SNS トピックを選択する必要があります。Amazon SNS FIFO トピックを使用する場合は、SNS FIFO トピックがターゲットとして設定されている CodeCommit イベントの Amazon Eventbridge ルールを設定する必要があります。

    • このトリガーで監視するリポジトリとブランチ。(ブランチを指定しない場合、トリガーはリポジトリのすべてのブランチに適用されます。)

    • このトリガーをアクティブ化するイベントです。

    ファイルを保存します。

    例えば、mainpreprod の 2 つのブランチについて、Amazon SNSMySNSTopic トピックにすべてのリポジトリイベントを発行MyDemoRepoする という名前のリポジトリのトリガーを作成するには、次のようにします。

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyFirstTrigger", "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] } ] }

    リポジトリのトリガーごとに、JSON にトリガーブロックが必要です。リポジトリに対して複数のトリガーを作成するには、JSON に複数のトリガーブロックを含めます。このファイルに作成されたすべてのトリガーは指定されたリポジトリであることに注意してください。1 つの JSON ファイルに複数のリポジトリのトリガーを作成することはできません。たとえば、リポジトリに対して 2 つのトリガーを作成する場合は、2 つのトリガーブロックを持つ JSON ファイルを作成できます。次の例では、2 番目のトリガーにブランチが指定されていないため、トリガーはすべてのブランチに適用されます。

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyFirstTrigger", "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] }, { "name": "MySecondTrigger", "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic2", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ] }

    たとえば、コミットがリポジトリにプッシュされたときは、指定したイベントのトリガーを作成できます。イベントタイプは次のとおりです。

    • all: 指定されたリポジトリとブランチのすべてのイベント。

    • updateReference : 指定されたリポジトリやブランチにコミットをプッシュされた場合。

    • createReference: 指定されたリポジトリに新しいブランチまたはタグが作成された場合。

    • deleteReference: 指定されたリポジトリ内のブランチまたはタグが削除された場合。

    注記

    トリガー内で複数のイベントタイプを使用できます。ただし、all を指定すると、他のイベントを指定することはできません。

    有効なイベントタイプのリストを一覧表示するには、ターミナルまたはコマンドプロンプトで、「aws codecommit put-repository-triggers help」と入力します。

    また、customData に文字列を含めることもできます (たとえば、開発者がこのリポジトリで開発について検討するときに使用する IRC チャネル名)。このフィールドは文字列です。これは動的パラメータを渡すために使用することはできません。この文字列は、トリガーに応答して返される CodeCommit JSON に属性として追加されます。

  2. (オプション) ターミナルまたはコマンドラインプロンプトで、test-repository-triggers コマンドを実行することもできます。このテストでは、リポジトリからのサンプルデータを使用して (データがない場合はサンプルデータを生成して) Amazon SNS トピックの受信者に通知を送信します。例えば、以下は trigger.json という名前のトリガーファイルの JSON が有効で、Amazon SNS トピックに発行 CodeCommit できることをテストするために使用されます。

    aws codecommit test-repository-triggers --cli-input-json file://trigger.json

    成功した場合、このコマンドは次のような情報を返します。

    { "successfulExecutions": [ "MyFirstTrigger" ], "failedExecutions": [] }
  3. ターミナルまたはコマンドプロンプトで、put-repository-triggers コマンドを実行して CodeCommit にトリガーを作成します。たとえば、trigger.json という JSON ファイルを使用してトリガーを作成するには、次のようにします。

    aws codecommit put-repository-triggers --cli-input-json file://trigger.json

    このコマンドでは、次のような設定 ID が返されます。

    { "configurationId": "0123456-I-AM-AN-EXAMPLE" }
  4. トリガーの設定を表示するには、get-repository-triggers コマンドを実行して、リポジトリの名前を指定します。

    aws codecommit get-repository-triggers --repository-name MyDemoRepo

    このコマンドは、リポジトリ用に構成されたすべてのトリガーの構造を、次のように戻します。

    { "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic", "branches": [ "main", "preprod" ], "name": "MyFirstTrigger", "customData": "Project ID 12345" } ] }
  5. トリガー自体の機能をテストするには、トリガーを設定したリポジトリにコミットを作成してプッシュします。Amazon SNS トピックからの応答が表示されます。例えば、E メールを送信するように Amazon SNS トピックを設定すると、このトピックに登録されている E メールアカウントに Amazon SNS からの E メールが表示されます。

    以下は、リポジトリへの CodeCommitプッシュに応答して Amazon SNS から送信された E メールからの出力例です。

    { "Records":[ { "awsRegion":"us-east-2", "codecommit":{ "references" : [ { "commit":"317f8570EXAMPLE", "created":true, "ref":"refs/heads/NewBranch" }, { "commit":"4c925148EXAMPLE", "ref":"refs/heads/preprod", } ] }, "eventId":"11111-EXAMPLE-ID", "eventName":"ReferenceChange", "eventPartNumber":1, "eventSource":"aws:codecommit", "eventSourceARN":"arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "eventTime":"2016-02-09T00:08:11.743+0000", "eventTotalParts":1, "eventTriggerConfigId":"0123456-I-AM-AN-EXAMPLE", "eventTriggerName":"MyFirstTrigger", "eventVersion":"1.0", "customData":"Project ID 12345", "userIdentityARN":"arn:aws:iam::111122223333:user/JaneDoe-CodeCommit", } ] }