

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

# 例: Amazon SNS トピックの AWS CodeCommit トリガーを作成する
<a name="how-to-notify-sns"></a>

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 入門ガイド](https://docs.aws.amazon.com/sns/latest/dg/GettingStarted.html)を参照してください。
Amazon SNS FIFO (先入れ先出し) トピックは、CodeCommit トリガー向けにサポートされていません。

**Topics**
+ [CodeCommit リポジトリで Amazon SNS トピックへのトリガーを作成する (コンソール)](#how-to-notify-sns-console)
+ [CodeCommit リポジトリで Amazon SNS トピックへのトリガーを作成する (AWS CLI)](#how-to-notify-sns-cli)

## CodeCommit リポジトリで Amazon SNS トピックへのトリガーを作成する (コンソール)
<a name="how-to-notify-sns-console"></a>

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

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

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

1. [**トリガーの作成**] を選択してから、次の操作を行います。
   + [**Trigger name (トリガー名)**] に、トリガーの名前 (例: {{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 トピックから送信される通知に含めるオプションの情報 (開発者がこのリポジトリで開発について検討するときに使用する IRC チャネル名など) を指定します。このフィールドは文字列です。これは動的パラメータを渡すために使用することはできません。

    

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

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

## CodeCommit リポジトリで Amazon SNS トピックへのトリガーを作成する (AWS CLI)
<a name="how-to-notify-sns-cli"></a>

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

**Amazon SNS トピック用のトリガーを作成するには**

1. プレーンテキストエディタを開き、次を指定する JSON ファイルを作成します。
   + Amazon SNS トピック名。
**注記**  
Amazon SNS FIFO (先入れ先出し) トピックは、CodeCommit トリガー向けにサポートされていません。タイプが Standard (標準) に設定されている Amazon SNS トピックを選択する必要があります。
   + このトリガーで監視するリポジトリとブランチ。(ブランチを指定しない場合、トリガーはリポジトリのすべてのブランチに適用されます。)
   + このトリガーをアクティブ化するイベントです。

    ファイルを保存します。

   例えば、{{main}} と {{preprod}} という 2 つのブランチについての {{MySNSTopic}} という Amazon SNS トピックに対してすべてのリポジトリイベントを発行する {{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 に属性として追加されます。

1. (オプション) ターミナルまたはコマンドラインプロンプトで、**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": []
   }
   ```

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

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

   このコマンドでは、次のような[設定 ID](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PutRepositoryTriggers.html#-PutRepositoryTriggers-response-configurationId) が返されます。

   ```
   {
       "configurationId": "{{0123456-I-AM-AN-EXAMPLE}}"
   }
   ```

1. トリガーの設定を表示するには、**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"
           }
       ]
   }
   ```

1. トリガー自体の機能をテストするには、トリガーを設定したリポジトリにコミットを作成してプッシュします。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}}",
        }
     ]
   }
   ```