翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon S3 ソースに対する EventBridge ルールを作成する (CLI)
AWS CloudTrail 証跡を作成し、ログ記録を有効にするには
を使用して証跡 AWS CLI を作成するには、 create-trail コマンドを呼び出し、以下を指定します。
-
証跡名。
-
AWS CloudTrailにバケットポリシーをすでに適用しているバケットです。
詳細については、AWS 「コマンドラインインターフェイスを使用した証跡の作成」を参照してください。
-
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 -
start-logging コマンドを呼び出し、
--nameパラメータを含めます。この変更を行う理由 これにより、ソースバケットの CloudTrail ロギングが開始され、EventBridge にイベントが送信されます。
例:
次のコマンドでは、
--nameを使用して、my-trailという名前の証跡のログ記録を開始します。aws cloudtrail start-logging --name my-trail -
put-event-selectors コマンドを呼び出し、
--trail-nameおよび--event-selectorsパラメータを含めます。イベントセレクタを使用してソースバケットに記録するデータイベントを指定し、それらのイベントを EventBridge ルールに送信します。この変更を行う理由 このコマンドはイベントをフィルタ処理します。
例:
次のサンプルコマンドでは、
--trail-nameおよび--event-selectorsを使用してソースバケットとamzn-s3-demo-source-bucket/myFolderという名前のプレフィックスにデータイベントの管理を指定します。aws cloudtrail put-event-selectors --trail-namemy-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 ルールを作成し、アクセス許可ポリシーを適用するには
-
EventBridge が CodePipeline を使用してルールを呼び出すためのアクセス許可を付与します。詳細については、 デベロッパーガイドの [Amazon EventBridge のリソースベースのポリシーを使用する] を参照してください。
-
次のサンプルを使用して、EventBridge にサービスロールの引き受けを許可する信頼ポリシーを作成します。このスクリプトに
trustpolicyforEB.jsonという名前を付けます。 -
次のコマンドを使用して、
Role-for-MyRuleロールを作成し、信頼ポリシーをアタッチします。この変更を行う理由 ロールにこの信頼ポリシーを追加すると、EventBridge に対するアクセス許可が作成されます。
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json -
次に示すように、
MyFirstPipelineという名前のパイプラインに対してアクセス許可ポリシー JSON を作成します。アクセス権限ポリシーにpermissionspolicyforEB.jsonと名前を付けます。 -
次のコマンドを実行して、作成した
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
-
-
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" -
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 -
(オプション) 特定のイメージ ID のソースオーバーライドを使用して入力トランスフォーマーを設定するには、CLI コマンドで次の JSON を使用します。次の例では、オーバーライドを設定します。
-
Sourceこの例ではactionName、 は、ソースイベントから派生したものではなく、パイプラインの作成時に定義された動的値です。 -
S3_OBJECT_VERSION_IDこの例ではrevisionType、 は、ソースイベントから派生したものではなく、パイプラインの作成時に定義された動的値です。 -
この例の
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>" } } } } ] } -
パイプラインの PollForSourceChanges パラメータを編集するには
重要
このメソッドを使用してパイプラインを作成すると、PollForSourceChanges パラメータはデフォルトで true になります (ただし、明示的に false に設定した場合は除きます)。イベントベースの変更検出を追加する場合は、このパラメータを出力に追加する必要があります。ポーリングを無効にするには、このパラメータを false に設定します。そうしないと、1 つのソース変更に対してパイプラインが 2 回起動されます。詳細については、「PollForSourceChanges パラメータの有効な設定」を参照してください
-
get-pipeline コマンドを実行して、パイプライン構造を JSON ファイルにコピーします。例えば、
MyFirstPipelineという名前のパイプラインに対して、以下のコマンドを実行します。aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonこのコマンドは何も返しませんが、作成したファイルは、コマンドを実行したディレクトリにあります。
-
この例に示すように、プレーンテキストエディタでJSONファイルを開き、
amzn-s3-demo-source-bucketという名前のバケットのPollForSourceChangesパラメータをfalseに変更してソースステージを編集します。この変更を行う理由 このパラメータを
falseに設定すると、定期的チェックがオフになるため、イベントベースの変更検出のみ使用することができます。"configuration": { "S3Bucket": "amzn-s3-demo-source-bucket","PollForSourceChanges": "false","S3ObjectKey": "index.zip" }, -
get-pipeline コマンドを使用して取得したパイプライン構造を使用している場合、JSON ファイルから
metadata行を削除する必要があります。それ以外の場合は、update-pipeline コマンドで使用することはできません。"metadata": { }行と、"created"、"pipelineARN"、"updated"フィールドを削除します。例えば、構造から以下の行を削除します。
"metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" },ファイルを保存します。
-
変更を適用するには、パイプライン JSON ファイルを指定して、update-pipeline コマンドを実行します。
重要
ファイル名の前に必ず
file://を含めてください。このコマンドでは必須です。aws codepipeline update-pipeline --cli-input-json file://pipeline.jsonこのコマンドは、編集したパイプラインの構造全体を返します。
注記
update-pipeline コマンドは、パイプラインを停止します。update-pipeline コマンドを実行したときにパイプラインによりリビジョンが実行されている場合、その実行は停止します。更新されたパイプラインによりそのリビジョンを実行するには、パイプラインを手動で開始する必要があります。パイプラインを手動で開始するには start-pipeline-execution コマンドを使用します。