AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可繼續正常使用此服務。了解更多」
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
示例:為 Amazon SNS 主題創建 AWS CodeCommit 觸發器
您可以為 CodeCommit 儲存庫建立觸發器,以便該儲存庫中的事件觸發來自 Amazon 簡單通知服務 (AmazonSNS) 主題的通知。您可能想要建立 Amazon SNS 主題的觸發條件,讓使用者能夠訂閱有關儲存庫事件的通知,例如刪除分支。您還可以利用 Amazon SNS 主題與其他服務的集成, 如 Amazon 簡單隊列服務 (AmazonSQS) 和 AWS Lambda.
注意
您必須將觸發器指向現有的 Amazon SNS 主題,該主題為回應儲存庫事件所採取的動作。如需有關建立和訂閱 Amazon SNS 主題的詳細資訊,請參閱 Amazon 簡單通知服務入門。
CodeCommit 觸發器不支援 Amazon SNS FIFO (先進先出) 主題。
為 CodeCommit存放庫 (主控台) 建立 Amazon SNS 主題的觸發器
在https://console.aws.amazon.com/codesuite/代碼提交/
家中打開 CodeCommit 控制台。 -
在 Repositories (儲存庫) 中,選擇儲存庫以針對儲存庫事件建立觸發。
-
在儲存庫的導覽窗格中,選擇 Settings (設定),然後選擇 Triggers (觸發)。
-
選擇 Create trigger (建立觸發),然後執行下列動作:
-
在觸發器名稱中,輸入觸發程式的名稱 (例如,
MyFirstTrigger
). -
在事件中,選擇觸發 Amazon SNS 主題以傳送通知的存放庫事件。
如果您選擇 All repository events (所有儲存庫事件),則無法選擇其他任何事件。若要選擇事件子集,請移除 All repository events (所有儲存庫事件),然後從清單中選擇一或多個事件。例如,如果您希望觸發程序只在使用者在 CodeCommit存放庫中建立分支或標籤時執行,請移除 [所有存放庫事件],然後選擇 [建立分支或標記]。
-
如果您希望將觸發套用到儲存庫的所有分支,請在 Branches (分支) 中保持空白選擇,因為這個預設選項會自動將觸發套用到所有分支。如果您希望此觸發只套用到特定分支,請從儲存庫分支清單中選擇最多 10 個分支名稱。
-
在選擇要使用的服務中,選擇 Amazon SNS。
-
在 Amazon 中SNS,從清單中選擇主題名稱或輸入主題ARN的名稱。
注意
CodeCommit 觸發器不支援 Amazon SNS FIFO (先進先出) 主題。您必須選擇將其類型設置為標準的 Amazon SNS 主題。
-
在自訂資料中,提供您希望在 Amazon SNS 主題傳送的通知中包含的任何選擇性資訊 (例如,開發人員在討論此儲存庫中的開發時使用的通IRC道名稱)。此欄位是字串。無法用於傳遞任何動態參數。
-
-
(選用) 選擇 Test trigger (測試觸發)。此步驟可協助您確認是否已正確設定 CodeCommit 和 Amazon SNS 主題之間的存取權限。它會使用 Amazon SNS 主題,使用儲存庫中的資料 (如果有的話) 傳送測試通知。如果沒有實際的資料可用,測試通知會包含範例資料。
-
選擇 Create trigger (建立觸發),以完成建立觸發。
為 CodeCommit 存儲庫創建 Amazon SNS 主題的觸發器(AWS CLI)
您也可以使用命令列為 Amazon SNS 主題建立觸發器,以回應 CodeCommit 儲存庫事件,例如有人將提交推送至您的儲存庫時。
為 Amazon SNS 主題創建觸發器
-
開啟純文字編輯器並建立指定下列項目的JSON檔案:
-
Amazon 主SNS題名稱。
注意
CodeCommit 觸發器不支援 Amazon SNS FIFO (先進先出) 主題。您必須選擇將其類型設置為標準的 Amazon SNS 主題。
-
您要使用此觸發來監控的儲存庫和分支。(如果您不指定任何分支,則觸發會套用到儲存庫中的所有分支。)
-
啟動此觸發的事件。
儲存檔案。
例如,若要為名為的存放庫建立觸發器
MyDemoRepo
將所有儲存庫事件發佈到名為的 Amazon SNS 主題MySNSTopic
對於兩個分支,main
以及preprod
:{ "repositoryName": "
MyDemoRepo
", "triggers": [ { "name": "MyFirstTrigger
", "destinationArn": "arn:aws:sns:us-east-2
:111122223333
:MySNSTopic
", "customData": "", "branches": [ "main
", "preprod
" ], "events": [ "all" ] } ] }存放庫中的每個觸發器都必須有一個觸發器區塊。JSON若要為存放庫建立多個觸發器,請在中包含一個以上的觸發器區塊JSON。請記住,此檔案中建立的所有觸發是針對指定的儲存庫。您無法在單一JSON檔案中為多個儲存庫建立觸發程序。例如,如果您想要為一個存放庫建立兩個觸發程序,您可以建立具有兩個觸發區塊的JSON檔案。在下列範例中,第二個觸發未指定分支,因此該觸發會套用到所有分支:
{ "repositoryName": "
MyDemoRepo
", "triggers": [ { "name": "MyFirstTrigger
", "destinationArn": "arn:aws:sns:us-east-2
:111122223333
:MySNSTopic
", "customData": "", "branches": [ "main
", "preprod
" ], "events": [ "all" ] }, { "name": "MySecondTrigger
", "destinationArn": "arn:aws:sns:us-east-2
:111122223333
:MySNSTopic2
", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ] }您可以為您指定的事件建立觸發,例如將遞交推送至儲存庫時。事件類型包括:
-
all
代表指定的儲存庫和分支中的所有事件。 -
updateReference
表示遞交推送到指定的儲存庫和分支。 -
createReference
表示指定的儲存庫中建立新的分支或標籤。 -
deleteReference
表示指定的儲存庫中刪除分支或標籤。
注意
您可以在一個觸發中使用多個事件類型。不過,如果您指定
all
,則無法指定其他事件。若要查看有效事件類型的完整清單,請在終端機或命令提示字元中輸入 aws codecommit put-repository-triggers help。
此外,您可以在中包含字串
customData
(例如,開發人員在討論此儲存庫中的開發時使用的IRC頻道名稱)。此欄位是字串。無法用於傳遞任何動態參數。此字串會附加為回應觸發程序而 CodeCommit JSON傳回的屬性。 -
(選用) 在終端機或命令提示字元中,執行 test-repository-triggers 命令。此測試使用儲存庫中的範例資料 (如果沒有資料可用,則會產生範例資料) 向 Amazon SNS 主題的訂閱者傳送通知。例如,下面是用來測試在觸發器文件JSON中命名的
trigger.json
是有效的, CodeCommit 可以發布到 Amazon SNS 主題:aws codecommit test-repository-triggers --cli-input-json file://
trigger.json
若成功,此命令會傳回類似如下的資訊:
{ "successfulExecutions": [ "
MyFirstTrigger
" ], "failedExecutions": [] }-
在終端機或命令提示字元中,執行put-repository-triggers指令以在中建立觸發器 CodeCommit。例如,若要使用名為的JSON檔案
trigger.json
若要建立觸發器:aws codecommit put-repository-triggers --cli-input-json file://
trigger.json
此命令會傳回類似以下的組態 ID:
{ "configurationId": "
0123456-I-AM-AN-EXAMPLE
" } -
若要檢視觸發的組態,請執行 get-repository-triggers 命令,並指定儲存庫的名稱:
aws codecommit get-repository-triggers --repository-name
MyDemoRepo
此命令會傳回為儲存庫設定之所有觸發的結構,類似如下:
{ "configurationId": "
0123456-I-AM-AN-EXAMPLE
", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:sns:us-east-2
:111122223333
:MySNSTopic
", "branches": [ "main
", "preprod
" ], "name": "MyFirstTrigger
", "customData": "Project ID 12345" } ] } -
為了測試觸發本身的功能,請進行遞交並推送至您已設定觸發的儲存庫。您應該會看到來自 Amazon SNS 主題的回應。例如,如果您將 Amazon SNS 主題設定為傳送電子郵件,您應該會在訂閱該主題的電子郵件帳戶SNS中看到來自 Amazon 的電子郵件。
以下是從 Amazon 傳送回應推送至 CodeCommit儲存庫SNS的電子郵件的範例輸出:
{ "Records":[ { "awsRegion":"us-east-2", "codecommit":{ "references" : [ { "commit":"
317f8570EXAMPLE
", "created":true, "ref":"refs/heads/NewBranch
" }, { "commit":"4c925148EXAMPLE
", "ref":"refs/heads/preprod
", } ] }, "eventId":"11111-EXAMPLE-ID
", "eventName":"ReferenceChange", "eventPartNumber":1, "eventSource":"aws:codecommit", "eventSourceARN":"arn:aws:codecommit:us-east-2:111122223333
:MyDemoRepo
", "eventTime":"2016-02-09T00:08:11.743+0000", "eventTotalParts":1, "eventTriggerConfigId":"0123456-I-AM-AN-EXAMPLE
", "eventTriggerName":"MyFirstTrigger
", "eventVersion":"1.0", "customData":"Project ID 12345", "userIdentityARN":"arn:aws:iam::111122223333
:user/JaneDoe-CodeCommit
", } ] }