AWS CodeCommit
ユーザーガイド (API バージョン 2015-04-13)

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

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

注記

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

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

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

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

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

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

    • [Trigger name (トリガー名)] に、トリガーの名前 (例: MyFirstTrigger) を入力します。

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

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

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

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

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

    • [カスタムデータ] では、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 トピック名

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

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

    ファイルを保存します。

    たとえば、2 つのブランチ (masterpreprod) で Amazon SNS トピック (MySNSTopic) に対してすべてのリポジトリイベントを発行するリポジトリ (MyDemoRepo) のトリガーを作成するには、次のようにします。

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

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

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyFirstTrigger", "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MySNSTopic", "customData": "", "branches": [ "master", "preprod" ], "events": [ "all" ] }, { "name": "MySecondTrigger", "destinationArn": "arn:aws:sns:us-east-2:80398EXAMPLE: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 が有効であり、CodeCommit が Amazon SNS トピックに発行できることをテストします。

    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:80398EXAMPLE:MySNSTopic", "branches": [ "master", "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:80398EXAMPLE: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::80398EXAMPLE:user/JaneDoe-CodeCommit", } ] }