本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:为 Amazon SNS 主题创建 AWS CodeCommit 触发器
您可以为存储库创建触发器,以便该 CodeCommit 存储库中的事件触发来自亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 主题的通知。您可能需要为 Amazon SNS 主题创建触发器,使用户能够订阅有关存储库事件(如删除分支)的通知。您还可以利用亚马逊 SNS 主题与其他服务的集成,例如亚马逊简单队列服务 (Amazon SQS) Simple Queue Service 和。 AWS Lambda
注意
您必须将触发器指向现有的 Amazon SNS 主题,后者将作为响应存储库事件所执行的操作。有关创建和订阅 Amazon SNS 主题的更多信息,请参阅开始使用 Amazon Simple Notification Service。
触发器不支持 Amazon SNS FIFO(先入先出)主题。 CodeCommit
为 CodeCommit存储库的 Amazon SNS 主题创建触发器(控制台)
打开 CodeCommit 控制台,网址为 https://console.aws.amazon.com/codesuite/codecommit/home
。 -
从存储库 中,选择要创建存储库事件触发器的存储库。
-
在存储库的导航窗格中,选择设置,然后选择触发器。
-
选择创建触发器,然后执行以下操作:
-
在触发器名称中,输入触发器的名称(例如
MyFirstTrigger
)。 -
在事件中,选择将触发 Amazon SNS 主题以发送通知的存储库事件。
如果选择 All repository events,则无法选择任何其他事件。要选择事件的子集,请删除 All repository events,然后从列表中选择一个或多个事件。例如,如果您希望触发器仅在用户在 CodeCommit存储库中创建分支或标签时运行,请移除所有存储库事件,然后选择创建分支或标记。
-
如果希望触发器应用于存储库的所有分支,请在分支中,将选定内容保留为空,因为此默认选项会自动将触发器应用于所有分支。如果您希望此触发器仅应用于特定分支,请从存储库分支列表中选择最多 10 个分支名称。
-
在选择要使用的服务中,选择 Amazon SNS。
-
在 Amazon SNS 中,从列表中选择主题名称或输入主题的 ARN。
注意
触发器不支持 Amazon SNS FIFO(先入先出)主题。 CodeCommit 您必须选择类型设置为“标准”的 Amazon SNS 主题。如果您想使用 Amazon SNS FIFO 主题,则必须为将 SNS FIFO 主题配置为目标 CodeCommit 的事件配置 Amazon Eventbridge 规则。
-
在自定义数据中,提供您希望包含在 Amazon SNS 主题发送的通知中的任何信息(例如,开发人员在讨论该存储库中的开发工作时使用的 IRC 通道名称)。该字段是一个字符串。它不能用于传递任何动态参数。
-
-
(可选)选择测试触发器。此步骤可帮助您确认是否正确配置了与 Amazon SNS 主题 CodeCommit 之间的访问权限。它通过 Amazon SNS 主题使用您存储库中的数据(如果可用)发送测试通知。如果没有真实数据可用,测试通知将包含示例数据。
-
选择创建触发器以完成触发器的创建操作。
为 CodeCommit 存储库的 Amazon SNS 主题创建触发器 ()AWS CLI
您还可以使用命令行为 Amazon SNS 主题创建触发器,以响应 CodeCommit 存储库事件,例如有人向您的存储库推送提交时。
为 Amazon SNS 主题创建触发器
-
打开纯文本编辑器,创建一个 JSON 文件,在其中指定:
-
Amazon SNS 主题名称。
注意
触发器不支持 Amazon SNS FIFO(先入先出)主题。 CodeCommit 您必须选择类型设置为“标准”的 Amazon SNS 主题。如果您想使用 Amazon SNS FIFO 主题,则必须为将 SNS FIFO 主题配置为目标 CodeCommit 的事件配置 Amazon Eventbridge 规则。
-
要用该触发器监控的存储库和分支。(如果没有指定任何分支,触发器将应用到存储库中的所有分支。)
-
激活该触发器的事件。
保存该文件。
例如,要为名为 main 和 preprod 的存储库创建触发器
MyDemoRepo
,将所有存储库事件发布到名为 mysnStopic 的 Amazon SN
S 主题:{ "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 主题的订阅用户发送通知。例如,以下内容用于测试名为 t
rigger.json 的触发文件中的 JSON
是否有效,以及该文件是否 CodeCommit 可以发布到 Amazon SNS 主题:aws codecommit test-repository-triggers --cli-input-json file://
trigger.json
如果成功,该命令返回类似以下内容的信息:
{ "successfulExecutions": [ "
MyFirstTrigger
" ], "failedExecutions": [] }-
在终端或命令提示符处,运行put-repository-triggers命令以在中创建触发器 CodeCommit。例如,要使用名为
trigger.json
的 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 主题配置为发送电子邮件,您应该会在订阅了该主题的电子邮件账户中看到来自 Amazon SNS 的电子邮件。
以下是 Amazon SNS 为响应仓库推送而发送的电子邮件的输出示例: CodeCommit
{ "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
", } ] }