Amazon S3 ソースの EventBridge ルールを作成する (CLI) - AWS CodePipeline

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

Amazon S3 ソースの EventBridge ルールを作成する (CLI)

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

を使用して証跡 AWS CLI を作成するには、 create-trail コマンドを呼び出し、以下を指定します。

  • 証跡名。

  • AWS CloudTrailにバケットポリシーをすでに適用しているバケットです。

詳細については、AWS 「コマンドラインインターフェイス を使用した証跡の作成」を参照してください。

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

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

    次のコマンドでは、--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
  2. start-logging コマンドを呼び出し、--name パラメータを含めます。

    この変更を行う理由 このコマンドは、ソースバケットの CloudTrail ログ記録を開始し、イベントを に送信します EventBridge。

    例:

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

    aws cloudtrail start-logging --name my-trail
  3. 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"] }] }]'
Amazon S3 をイベントソースおよびターゲット CodePipeline とする EventBridge ルールを作成し、アクセス許可ポリシーを適用するには
  1. ルールの呼び出し EventBridge に使用するアクセス許可 CodePipeline を に付与します。詳細については、「Amazon のリソースベースのポリシーの使用 EventBridge」を参照してください。

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 次のコマンドを使用して、Role-for-MyRule ロールを作成し、信頼ポリシーをアタッチします。

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

      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
    3. JSON「」という名前のパイプラインのアクセス許可ポリシー を作成しますMyFirstPipeline。アクセス権限ポリシーに permissionspolicyforEB.json と名前を付けます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
    4. 次のコマンドを実行して、作成した 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
  2. 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"
  3. をターゲット 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
パイプラインの PollForSourceChanges パラメータを編集するには
重要

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

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

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

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

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

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

    "configuration": { "S3Bucket": "amzn-s3-demo-source-bucket", "PollForSourceChanges": "false", "S3ObjectKey": "index.zip" },
  3. get-pipeline コマンドを使用して取得したパイプライン構造を使用している場合は、 JSON ファイルからmetadata行を削除する必要があります。それ以外の場合は、update-pipeline コマンドで使用することはできません。"metadata": { } 行と、"created""pipelineARN""updated" フィールドを削除します。

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

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

    ファイルを保存します。

  4. 変更を適用するには、パイプラインJSONファイルを指定して update-pipeline コマンドを実行します。

    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

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

    このコマンドは、編集したパイプラインの構造全体を返します。

    注記

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