為 Amazon ECR 來源 (CLI) 建立 EventBridge 規則 - AWS CodePipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為 Amazon ECR 來源 (CLI) 建立 EventBridge 規則

呼叫 put-rule 命令,並指定:

  • 可唯一識別您所建立規則的名稱。在與 AWS 帳戶 CodePipeline 相關聯的所有管道中,此名稱必須是唯一的。

  • 規則所使用來源和詳細資訊欄位的事件模式。如需詳細資訊,請參閱 Amazon EventBridge 和事件模式

若要使用 Amazon ECR 做為事件來源並 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 角色,並連接信任政策。

      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
    3. 為名為 MyFirstPipeline 的管道建立許可政策 JSON,如這個範例所示。將許可政策命名為 permissionspolicyforEB.json

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
    4. 使用執行以下命令,將 CodePipeline-Permissions-Policy-for-EB 許可政策連接到 Role-for-MyRule 角色。

      為什麼我會做出此變更? 將此原則新增至角色會建立的權限 EventBridge。

      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 參數。

    為什麼我會做出此變更? 您必須使用規則來建立事件,該規則指定必須如何進行映像推送,以及命名要由事件啟動的管道的目標。

    以下範例命令會建立名為 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 事件和/ EventBridge或 Amazon 彈性容器登錄事件。

  3. 若要新增 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