

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

# Amazon S3 ソースに対する EventBridge ルールを作成する (CLI)
<a name="create-cloudtrail-S3-source-cli"></a><a name="proc-cli-event-s3-createtrail"></a>

**AWS CloudTrail 証跡を作成し、ログ記録を有効にするには**

を使用して証跡 AWS CLI を作成するには、 **create-trail** コマンドを呼び出し、以下を指定します。
+ 証跡名。
+  AWS CloudTrailにバケットポリシーをすでに適用しているバケットです。

詳細については、[AWS 「コマンドラインインターフェイスを使用した証跡の作成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.html)」を参照してください。

1. **create-trail** コマンドを呼び出し、`--name` および `--s3-bucket-name` パラメータを含めます。

   **この変更を行う理由** これにより、S3 ソースバケットに必要な CloudTrail 証跡が作成されます。

   次のコマンドでは、`--name` および `--s3-bucket-name` を使用して、`my-trail` という名前の証跡と、`amzn-s3-demo-source-bucket` という名前のバケットを作成します。

   ```
   aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket
   ```

1. **start-logging** コマンドを呼び出し、`--name` パラメータを含めます。

   **この変更を行う理由** これにより、ソースバケットの CloudTrail ロギングが開始され、EventBridge にイベントが送信されます。

   例:

   次のコマンドでは、`--name` を使用して、`my-trail` という名前の証跡のログ記録を開始します。

   ```
   aws cloudtrail start-logging --name my-trail
   ```

1. **put-event-selectors** コマンドを呼び出し、`--trail-name` および `--event-selectors` パラメータを含めます。イベントセレクタを使用してソースバケットに記録するデータイベントを指定し、それらのイベントを EventBridge ルールに送信します。

   **この変更を行う理由** このコマンドはイベントをフィルタ処理します。

   例:

   次のサンプルコマンドでは、`--trail-name` および `--event-selectors` を使用してソースバケットと `amzn-s3-demo-source-bucket/myFolder` という名前のプレフィックスにデータイベントの管理を指定します。

   ```
   aws cloudtrail put-event-selectors --trail-name my-trail --event-selectors '[{ "ReadWriteType": "WriteOnly", "IncludeManagementEvents":false, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::amzn-s3-demo-source-bucket/myFolder/file.zip"] }] }]'
   ```<a name="proc-cli-event-s3-createrule"></a>

**Amazon S3 をイベントソース、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` ロールを作成し、信頼ポリシーをアタッチします。

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

      ```
      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` アクセス権限ポリシーをアタッチします。

      ```
      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` パラメータを含めます。

   次のサンプルコマンドでは、`MyS3SourceRule` という名前のルールが作成されます。

   ```
   aws events put-rule --name "MyS3SourceRule" --event-pattern "{\"source\":[\"aws.s3\"],\"detail-type\":[\"AWS API Call via CloudTrail\"],\"detail\":{\"eventSource\":[\"s3.amazonaws.com\"],\"eventName\":[\"CopyObject\",\"PutObject\",\"CompleteMultipartUpload\"],\"requestParameters\":{\"bucketName\":[\"amzn-s3-demo-source-bucket\"],\"key\":[\"my-key\"]}}}
    --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
   ```

1. CodePipeline をターゲットとして追加するには、**put-targets** コマンドを呼び出し、`--rule` および `--targets` パラメータを含めます。

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

   ```
   aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
   ```

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

   ```
   {
       "Rule": "my-rule",
       "Targets": [
           {
               "Id": "MyTargetId",
               "Arn": "ARN",
               "InputTransformer": {
                   "InputPathsMap": {
                       "revisionValue": "$.detail.object.version-id"
                   },
                   "InputTemplate": {
                       "sourceRevisions": {
                           "actionName": "Source",
                           "revisionType": "S3_OBJECT_VERSION_ID",
                           "revisionValue": "<revisionValue>"
                       }
                   }
               }
           }
       ]
   }
   ```<a name="proc-cli-flag-s3"></a>

**パイプラインの PollForSourceChanges パラメータを編集するには**
**重要**  
このメソッドを使用してパイプラインを作成すると、`PollForSourceChanges` パラメータはデフォルトで true になります (ただし、明示的に false に設定した場合は除きます)。イベントベースの変更検出を追加する場合は、このパラメータを出力に追加する必要があります。ポーリングを無効にするには、このパラメータを false に設定します。そうしないと、1 つのソース変更に対してパイプラインが 2 回起動されます。詳細については、「[`PollForSourceChanges` パラメータの有効な設定](PollForSourceChanges-defaults.md)」を参照してください

1. **get-pipeline** コマンドを実行して、パイプライン構造を JSON ファイルにコピーします。例えば、`MyFirstPipeline` という名前のパイプラインに対して、以下のコマンドを実行します。

   ```
   aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
   ```

   このコマンドは何も返しませんが、作成したファイルは、コマンドを実行したディレクトリにあります。

1. この例に示すように、プレーンテキストエディタで JSON ファイルを開き、`PollForSourceChanges` という名前のバケットの `amzn-s3-demo-source-bucket` パラメータを `false` に変更してソースステージを編集します。

   **この変更を行う理由** このパラメータを `false` に設定すると、定期的チェックがオフになるため、イベントベースの変更検出のみ使用することができます。

   ```
   "configuration": {
       "S3Bucket": "amzn-s3-demo-source-bucket",
       "PollForSourceChanges": "false",
       "S3ObjectKey": "index.zip"
   },
   ```

1. **get-pipeline** コマンドを使用して取得したパイプライン構造を使用している場合、JSON ファイルから `metadata` 行を削除する必要があります。それ以外の場合は、**update-pipeline** コマンドで使用することはできません。`"metadata": { }` 行と、`"created"`、`"pipelineARN"`、`"updated"` フィールドを削除します。

   例えば、構造から以下の行を削除します。

   ```
   "metadata": {
       "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name",
       "created": "date",
       "updated": "date"
   },
   ```

   ファイルを保存します。

1. 変更を適用するには、パイプライン JSON ファイルを指定して、**update-pipeline** コマンドを実行します。
**重要**  
ファイル名の前に必ず `file://` を含めてください。このコマンドでは必須です。

   ```
   aws codepipeline update-pipeline --cli-input-json file://pipeline.json
   ```

   このコマンドは、編集したパイプラインの構造全体を返します。
**注記**  
**update-pipeline** コマンドは、パイプラインを停止します。**update-pipeline** コマンドを実行したときにパイプラインによりリビジョンが実行されている場合、その実行は停止します。更新されたパイプラインによりそのリビジョンを実行するには、パイプラインを手動で開始する必要があります。パイプラインを手動で開始するには **start-pipeline-execution** コマンドを使用します。