本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 CodeCommit 來源的 EventBridge 規則 (CLI)
呼叫 put-rule 命令,並指定:
-
可唯一識別您所建立規則的名稱。在與 AWS 帳戶 CodePipeline 相關聯的所有管道中,此名稱必須是唯一的。
-
規則所使用來源和詳細資訊欄位的事件模式。如需詳細資訊,請參閱 Amazon EventBridge 和事件模式。
若要以作 CodeCommit 為事件來源與 CodePipeline 目標建立 EventBridge 規則
-
新增用 EventBridge CodePipeline 於呼叫規則的權限。如需詳細資訊,請參閱在 Amazon EventBridge 使用以資源為基礎的政策。
-
使用下列範例建立允許擔任服務角色 EventBridge 的信任原則。將信任政策命名為
trustpolicyforEB.json
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
使用下列命令來建立
Role-for-MyRule
角色,並連接信任政策。aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
為名為的管道建立權限原則JSON,如本範例所示
MyFirstPipeline
。將許可政策命名為permissionspolicyforEB.json
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
使用執行以下命令,將
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
-
-
呼叫 put-rule 命令,並包含
--name
、--event-pattern
和--role-arn
參數。為什麼我會做出此變更? 此命令可讓 AWS CloudFormation 建立事件。
以下範例命令會建立名為
MyCodeCommitRepoRule
的規則。aws events put-rule --name "MyCodeCommitRepoRule" --event-pattern "{\"source\":[\"aws.codecommit\"],\"detail-type\":[\"CodeCommit Repository State Change\"],\"resources\":[\"
repository-ARN
\"],\"detail\":{\"referenceType\":[\"branch\"],\"referenceName\":[\"main
\"]}}" --role-arn "arn:aws:iam::ACCOUNT_ID
:role/Role-for-MyRule" -
若要新增 CodePipeline 為目標,請呼叫指put-targets令並包含下列參數:
-
--rule
參數與您使用 put-rule 所建立的rule_name
搭配使用。 -
--targets
參數與目標清單中目標的清單Id
和目標管道的ARN
搭配使用。
以下命令範例指定名為
MyCodeCommitRepoRule
的規則,該目標Id
是由數字 1 組成,指出在規則的目標清單中,這是目標 1。此範例命令也會指定管道的範例ARN
。儲存庫中若發生變更,管道就會啟動。aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
-
若要編輯管線的 PollForSourceChanges參數
重要
當您使用這個方法建立管道時,如果沒有明確設為 false,則 PollForSourceChanges
參數會預設為 true。當新增基於事件的變更偵測時,您必須將該參數新增到輸出,並將其設為 false 以停用輪詢。否則,您的管道會針對單一來源變更啟動兩次。如需詳細資訊,請參閱 PollForSourceChanges 參數的有效設定。
-
執行指get-pipeline令,將配管結構複製到JSON檔案中。例如,針對名為
MyFirstPipeline
的管道,執行下列命令:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
此命令不會傳回任何內容,但您建立的檔案應該會顯示在您執行命令的目錄中。
-
在任何純文字編輯器中開啟JSON檔案,並將
PollForSourceChanges
參數變更為來源階段false
,如本範例所示。為什麼我會做出此變更? 將此參數變更為
false
會關閉定期檢查,因此您只能使用事件型變更偵測。"configuration": {
"PollForSourceChanges": "false",
"BranchName": "main", "RepositoryName": "MyTestRepo" }, -
如果您正在使用get-pipeline指令擷取的配管結構,請從JSON檔案中移除這些
metadata
行。否則,update-pipeline 命令無法使用它。移除"metadata": { }
行,以及"created"
、"pipelineARN"
和"updated"
欄位。例如,從結構中移除下列幾行:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },儲存檔案。
-
若要套用變更,請執行指update-pipeline令,並指定管線JSON檔案:
重要
請確認在檔案名稱之前包含
file://
。這是此命令必要項目。aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
此命令會傳回所編輯管道的整個結構。
注意
update-pipeline 命令將終止管道。若在您執行 update-pipeline 命令時有修訂正在透過管道執行,該執行將停止。您必須手動啟動管道,以透過更新的管道執行該修訂。使用
start-pipeline-execution
命令來手動啟動您的管道。