

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

# Amazon ECR ソースに対する EventBridge ルールを作成する (CLI)
<a name="create-cwe-ecr-source-cli"></a>

**put-rule** コマンドを呼び出して、以下を指定します。
+ 作成中のルールを一意に識別する名前。この名前は、 AWS アカウントに関連付けられた CodePipeline で作成するすべてのパイプラインで一意である必要があります。
+ ルールで使用するソースと詳細フィールドのイベントパターン。詳細については、「[Amazon EventBridge とイベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)」を参照してください。

**Amazon ECR をイベントソース、CodePipeline をターゲットとして EventBridge ルールを作成するには**

1. EventBridge が CodePipeline を使用してルールを呼び出すためのアクセス許可を追加します。詳細については、 デベロッパーガイドの [[Amazon EventBridge のリソースベースのポリシーを使用する](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html)] を参照してください。

   1. 次のサンプルを使用して、EventBridge にサービスロールの引き受けを許可する信頼ポリシーを作成します。信頼ポリシーに `trustpolicyforEB.json` と名前を付けます。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "events.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 次のコマンドを使用して、`Role-for-MyRule` ロールを作成し、信頼ポリシーをアタッチします。

      ```
      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
      ```

   1. 次のサンプルに示すように、`MyFirstPipeline` というパイプラインに対して、アクセス権限ポリシー JSON を作成します。アクセス権限ポリシーに `permissionspolicyforEB.json` と名前を付けます。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "codepipeline:StartPipelineExecution"
                  ],
                  "Resource": [
                      "arn:aws:codepipeline:us-west-2:111122223333:MyFirstPipeline"
                  ]
              }
          ]
      }
      ```

------

   1. 次のコマンドを使用して、`Role-for-MyRule` ロールに `CodePipeline-Permissions-Policy-for-EB` アクセス権限ポリシーをアタッチします。

      **この変更を行う理由** ロールにこのポリシーを追加すると、EventBridge に対するアクセス許可が作成されます。

      ```
      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
      ```

1. **put-rule** コマンドを呼び出し、`--name`、`--event-pattern`、`--role-arn` パラメータを含めます。

   **この変更を行う理由** イメージプッシュを行う方法を指定するルールと、そのイベントによって開始されるパイプラインを指定するターゲットを持つイベントを作成する必要があります。

   次のサンプルコマンドは、`MyECRRepoRule` というルールを作成します。

   ```
   aws events put-rule --name "MyECRRepoRule" --event-pattern "{\"detail-type\":[\"ECR Image Action\"],\"source\":[\"aws.ecr\"],\"detail\":{\"action-type\":[\"PUSH\"],\"image-tag\":[\"latest\"],\"repository-name\":[\"eb-test\"],\"result\":[\"SUCCESS\"]}}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
   ```
**注記**  
Amazon ECR イベントでサポートされているイベントパターン全体を表示するには、[[Amazon ECR Events と EventBridge](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-eventbridge.html)] または [[Amazon Elastic Container Registry Events](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#ecr-event-types)] を参照してください。

1. CodePipeline をターゲットとして追加するには、**put-targets** コマンドを呼び出し、次のパラメータを含めます。
   + `--rule` パラメータは、**put-rule** を使用して作成した `rule_name` で使用されます。
   + `--targets` パラメータは、ターゲットリストのリスト `Id` とターゲットパイプラインの `ARN` で使用されます。

   次のサンプルコマンドでは、`MyECRRepoRule` と呼ばれるルールに対して指定し、ターゲット `Id` は 1 番で構成されています。これは、ルールのターゲットのリストが何であるかを示し、この場合は ターゲット 1 です。サンプルコマンドでは、パイプラインの例 `Arn` とルールの例 `RoleArn` も指定します。パイプラインは、リポジトリ内に変更が加えられると開始します。

   ```
   aws events put-targets --rule MyECRRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline,RoleArn=arn:aws:iam::80398EXAMPLE:role/Role-for-MyRule
   ```

1. (オプション) 特定のイメージ ID のソースオーバーライドを使用して入力トランスフォーマーを設定するには、CLI コマンドで次の JSON を使用します。次の例では、以下のオーバーライドを設定します。
   + `actionName` は (この例では `Source`)、ソースイベントから派生したものではなく、パイプラインの作成時に定義された動的な値です。
   + `revisionType` は (この例では `IMAGE_DIGEST`)、ソースイベントから派生したものではなく、パイプラインの作成時に定義された動的な値です。
   + `revisionValue` は (この例では <*revisionValue*>)、ソースイベント変数から派生しています。

   ```
   {
       "Rule": "my-rule",
       "Targets": [
           {
               "Id": "MyTargetId",
               "Arn": "ARN",
               "InputTransformer": {
                   "InputPathsMap": {
                       "revisionValue": "$.detail.image-digest"
                   },
                   "InputTemplate": {
                       "sourceRevisions": [
                           {
                               "actionName": "Source",
                               "revisionType": "IMAGE_DIGEST",
                               "revisionValue": "<revisionValue>"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```