示例:為 Amazon SNS 主題創建 AWS CodeCommit 觸發器 - AWS CodeCommit

AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可繼續正常使用此服務。了解更多」

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

示例:為 Amazon SNS 主題創建 AWS CodeCommit 觸發器

您可以為 CodeCommit 儲存庫建立觸發器,以便該儲存庫中的事件觸發來自 Amazon 簡單通知服務 (AmazonSNS) 主題的通知。您可能想要建立 Amazon SNS 主題的觸發條件,讓使用者能夠訂閱有關儲存庫事件的通知,例如刪除分支。您還可以利用 Amazon SNS 主題與其他服務的集成, 如 Amazon 簡單隊列服務 (AmazonSQS) 和 AWS Lambda.

注意

為 CodeCommit存放庫 (主控台) 建立 Amazon SNS 主題的觸發器

  1. https://console.aws.amazon.com/codesuite/代碼提交/家中打開 CodeCommit 控制台。

  2. Repositories (儲存庫) 中,選擇儲存庫以針對儲存庫事件建立觸發。

  3. 在儲存庫的導覽窗格中,選擇 Settings (設定),然後選擇 Triggers (觸發)

  4. 選擇 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道名稱)。此欄位是字串。無法用於傳遞任何動態參數。

  5. (選用) 選擇 Test trigger (測試觸發)。此步驟可協助您確認是否已正確設定 CodeCommit 和 Amazon SNS 主題之間的存取權限。它會使用 Amazon SNS 主題,使用儲存庫中的資料 (如果有的話) 傳送測試通知。如果沒有實際的資料可用,測試通知會包含範例資料。

  6. 選擇 Create trigger (建立觸發),以完成建立觸發。

為 CodeCommit 存儲庫創建 Amazon SNS 主題的觸發器(AWS CLI)

您也可以使用命令列為 Amazon SNS 主題建立觸發器,以回應 CodeCommit 儲存庫事件,例如有人將提交推送至您的儲存庫時。

為 Amazon SNS 主題創建觸發器
  1. 開啟純文字編輯器並建立指定下列項目的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傳回的屬性。

  2. (選用) 在終端機或命令提示字元中,執行 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": [] }
  3. 在終端機或命令提示字元中,執行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" }
  4. 若要檢視觸發的組態,請執行 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" } ] }
  5. 為了測試觸發本身的功能,請進行遞交並推送至您已設定觸發的儲存庫。您應該會看到來自 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", } ] }