Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
监控 CodePipeline 事件
您可以在 EventBridge 中监控 CodePipeline 事件,这将从您自己的应用程序、软件即服务 (SaaS) 应用程序和 Amazon Web Services 服务 服务传输实时数据流。EventBridge 将该数据路由到 Amazon Lambda 和 Amazon Simple Notification Service 等目标。这些事件与 Amazon CloudWatch Events 中出现的事件相同,可提供近乎实时的系统事件流,这些事件描述 Amazon 资源的更改。有关更多信息,请参阅《Amazon EventBridge 用户指南》中的什么是 Amazon EventBridge?
Amazon EventBridge 是管理事件的首选方式。Amazon CloudWatch Events 和 EventBridge 是相同的底层服务和 API,但 EventBridge 提供了更多功能。您在 CloudWatch Events 或 EventBridge 中所作的更改将显示在每个控制台中。
事件由规则组成。通过选择以下选项来配置规则:
-
事件模式。每条规则都以事件模式表示,其中包含要监控的事件的来源和类型以及事件目标。要监控事件,您需要创建一条规则,将所监控的服务作为事件源,例如 CodePipeline。例如,您可以创建一个采用事件模式的规则,该规则使用 CodePipeline 作为事件源,在管道、阶段或操作的状态发生变化时触发规则。
-
目标。新规则将选定的服务作为事件目标。您可能想设置目标服务以发送通知,捕获状态信息,采取纠正措施,启动事件或采取其他操作。添加目标时,您还必须向 EventBridge 授予权限以允许其调用所选目标服务。
每种类型的执行状态更改事件发出包含特定消息内容的通知,其中:
-
初始 version
条目显示事件的版本号。
-
detail
管道下面的 version
条目显示管道结构版本号。
-
detail
管道下面的 execution-id
条目显示导致状态更改的管道执行的执行 ID。请参阅 Amazon CodePipeline API 参考中的 GetPipelineExecution API 调用。
-
该 pipeline-execution-attempt
条目显示特定执行 ID 的尝试次数或重试次数。
每当 Amazon Web Services 账户 中的资源状态发生变化时,CodePipeline 都会向 EventBridge 报告事件。对于以下资源,保证至少发出一次事件:
事件由 EventBridge 发出,事件模式和架构如上所述。对于已处理的事件,例如通过在开发人员工具控制台中配置的通知收到的事件,事件消息包含的事件模式字段会有些变化。例如,detail-type
字段转换为 detailType
。有关更多信息,请参阅 Amazon EventBridge API 参考中的 PutEvents API 调用。
以下示例显示了 CodePipeline 的事件。在可能的情况下,每个示例都显示已发出事件的架构以及已处理事件的架构。
详细信息类型
在设置要监控的事件时,可以选择事件的详细信息类型。
您可以配置在以下状态发生更改时发送的通知:
-
指定的管道或所有管道。您可以使用 "detail-type":
"CodePipeline Pipeline Execution State Change"
控制该行为。
-
指定管道或所有管道中的指定阶段或所有阶段。您可以使用 "detail-type":
"CodePipeline Stage Execution State Change"
控制该行为。
-
指定管道或所有管道的指定阶段或所有阶段中的指定操作或所有操作。您可以使用 "detail-type":
"CodePipeline Action Execution State Change"
控制该行为。
EventBridge 发出的事件包含 detail-type
参数,在事件处理后它会转换为 detailType
。
详细信息类型 |
状态 |
描述 |
CodePipeline 管道执行状态更改 |
CANCELED |
已取消管道执行,因为已更新管道结构。 |
FAILED |
未成功完成管道执行。 |
RESUMED |
已重试失败的管道执行以响应 RetryStageExecution API 调用。 |
STARTED |
当前正在运行管道执行。 |
STOPPED (已停止) |
停止过程已完成,管道执行已停止。 |
STOPPING (正在停止) |
由于发出了停止并等待或停止并放弃管道执行的请求,管道执行正在停止。 |
SUCCEEDED |
已成功完成管道执行。 |
SUPERSEDED |
在该管道执行等待完成下一阶段时,启动了较新的管道执行并通过管道。
|
CodePipeline 阶段执行状态更改 |
CANCELED |
已取消阶段,因为已更新管道结构。 |
FAILED |
阶段未成功完成。 |
RESUMED |
已重试失败的阶段以响应 RetryStageExecution API 调用。 |
STARTED |
当前正在运行阶段。 |
STOPPED (已停止) |
停止过程已完成,阶段执行已停止。 |
STOPPING (正在停止) |
由于发出了停止并等待或停止并放弃管道执行的请求,阶段执行正在停止。 |
SUCCEEDED |
已成功完成阶段。 |
CodePipeline 操作执行状态更改 |
ABANDONED |
由于发出了停止并放弃管道执行的请求,已放弃操作。 |
CANCELED |
已取消操作,因为已更新管道结构。 |
FAILED |
对于审批操作,FAILED (已失败) 状态表示审查者已拒绝操作,或者由于操作配置不正确而失败。 |
STARTED |
当前正在运行操作。 |
SUCCEEDED |
已成功完成操作。 |
管道级事件
当管道执行状态发生变化时,就会发出管道级事件。
管道 STARTED 事件
在启动管道执行时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-east-1
区域中名为 "myPipeline"
的管道。id
字段表示事件 ID,account
字段表示创建管道的账户 ID。
- Emitted event
-
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Pipeline Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-24T22:03:07Z",
"region": "us-east-1",
"resources": [
"arn:aws:codepipeline:us-east-1:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"execution-trigger": {
"trigger-type": "StartPipelineExecution",
"trigger-detail": "arn:aws:sts::123456789012:assumed-role/Admin/my-user"
},
"state": "STARTED",
"version": 1.0,
"pipeline-execution-attempt": 1.0
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Pipeline Execution State Change",
"region": "us-east-1",
"source": "aws.codepipeline",
"time": "2021-06-24T00:44:50Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-east-1:123456789012:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"execution-trigger": {
"trigger-type": "StartPipelineExecution",
"trigger-detail": "arn:aws:sts::123456789012:assumed-role/Admin/my-user"
},
"state": "STARTED",
"version": 1.0,
"pipeline-execution-attempt": 1.0
},
"resources": [
"arn:aws:codepipeline:us-east-1:123456789012:myPipeline"
],
"additionalAttributes": {}
}
管道 STOPPING 事件
在停止管道执行时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-west-2
区域中名为 myPipeline
的管道。
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Pipeline Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-24T22:02:20Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"state": "STOPPING",
"version": 3.0,
"pipeline-execution-attempt": 1.0
"stop-execution-comments": "Stopping the pipeline for an update"
}
}
管道 SUCCEEDED 事件
在管道执行成功时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-east-1
区域中名为 myPipeline
的管道。
- Emitted event
-
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Pipeline Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-24T22:03:44Z",
"region": "us-east-1",
"resources": [
"arn:aws:codepipeline:us-east-1:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"state": "SUCCEEDED",
"version": 3.0,
"pipeline-execution-attempt": 1.0
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Pipeline Execution State Change",
"region": "us-east-1",
"source": "aws.codepipeline",
"time": "2021-06-30T22:13:51Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-west-2:123456789012:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"state": "SUCCEEDED",
"version": 1.0,
"pipeline-execution-attempt": 1.0
},
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"additionalAttributes": {}
}
管道 SUCCEEDED(含 Git 标签的示例)
在管道执行有一个阶段已经重试并成功时,它发出一个事件以发送包含以下内容的通知。此示例适用于为 Git 标签配置了 execution-trigger
的 eu-central-1
区域中名为 myPipeline
的管道。
execution-trigger
字段的值是 tag-name
或 branch-name
,具体取决于触发管道的事件类型。
{
"version": "0",
"id": "b128b002-09fd-4574-4eba-27152726c777",
"detail-type": "CodePipeline Pipeline Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2023-10-26T13:50:53Z",
"region": "eu-central-1",
"resources": [
"arn:aws:codepipeline:eu-central-1:123456789012:BuildFromTag"
],
"detail": {
"pipeline": "BuildFromTag",
"execution-id": "e17b5773-cc0d-4db2-9ad7-594c73888de8",
"start-time": "2023-10-26T13:49:39.208Z",
"execution-trigger": {
"author-display-name": "Mary Major",
"full-repository-name": "mmajor/sample-project",
"provider-type": "GitLab",
"author-email": "email_address",
"commit-message": "Update file README.md",
"author-date": "2023-08-16T21:08:08Z",
"tag-name": "gitlab-v4.2.1",
"commit-id": "commit_ID
",
"connection-arn": "arn:aws:codestar-connections:eu-central-1:123456789012:connection/0f5b706a-1a1d-46c5-86b6-f177321bcfb2",
"author-id": "Mary Major"
},
"state": "SUCCEEDED",
"version": 32.0,
"pipeline-execution-attempt": 1.0
}
}
管道 FAILED 事件
在管道执行失败时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-west-2
区域中名为 "myPipeline"
的管道。
- Emitted event
-
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Pipeline Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-31T18:55:43Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"state": "FAILED",
"version": 4.0,
"pipeline-execution-attempt": 1.0
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Pipeline Execution State Change",
"region": "us-west-2",
"source": "aws.codepipeline",
"time": "2021-06-24T00:46:16Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-west-2:123456789012:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"state": "FAILED",
"version": 1.0,
"pipeline-execution-attempt": 1.0
},
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"additionalAttributes": {
"failedActionCount": 1,
"failedActions": [
{
"action": "Deploy",
"additionalInformation": "Deployment <ID> failed"
}
],
"failedStage": "Deploy"
}
管道 FAILED(含 Git 标签的示例)
除非它在源阶段失败,否则对于配置了触发器的管道,它会发出一个事件,发送包含以下内容的通知。此示例适用于为 Git 标签配置了 execution-trigger
的 eu-central-1
区域中名为 myPipeline
的管道。
execution-trigger
字段的值是 tag-name
或 branch-name
,具体取决于触发管道的事件类型。
- Emitted event
-
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Pipeline Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-31T18:55:43Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"execution-trigger": {
"author-display-name": "Mary Major",
"full-repository-name": "mmajor/sample-project",
"provider-type": "GitLab",
"author-email": "email_address",
"commit-message": "Update file README.md",
"author-date": "2023-08-16T21:08:08Z",
"tag-name": "gitlab-v4.2.1",
"commit-id": "commit_ID
",
"connection-arn": "arn:aws:codestar-connections:eu-central-1:123456789012:connection/0f5b706a-1a1d-46c5-86b6-f177321bcfb2",
"author-id": "Mary Major"
},
"state": "FAILED",
"version": 4.0,
"pipeline-execution-attempt": 1.0
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Pipeline Execution State Change",
"region": "us-west-2",
"source": "aws.codepipeline",
"time": "2021-06-24T00:46:16Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-west-2:123456789012:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"execution-trigger": {
"author-display-name": "Mary Major",
"full-repository-name": "mmajor/sample-project",
"provider-type": "GitLab",
"author-email": "email_address",
"commit-message": "Update file README.md",
"author-date": "2023-08-16T21:08:08Z",
"tag-name": "gitlab-v4.2.1",
"commit-id": "commit_ID
",
"connection-arn": "arn:aws:codestar-connections:eu-central-1:123456789012:connection/0f5b706a-1a1d-46c5-86b6-f177321bcfb2",
"author-id": "Mary Major"
},
"state": "FAILED",
"version": 1.0,
"pipeline-execution-attempt": 1.0
},
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"additionalAttributes": {
"failedActionCount": 1,
"failedActions": [
{
"action": "Deploy",
"additionalInformation": "Deployment <ID> failed"
}
],
"failedStage": "Deploy"
}
阶段级事件
当阶段执行状态发生变化时,就会发出阶段级事件。
阶段 STARTED 事件
在启动阶段执行时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-east-1
区域中名为 "myPipeline"
的管道的 Prod
阶段。
- Emitted event
-
{
"version": "0",
"id": 01234567-EXAMPLE,
"detail-type": "CodePipeline Stage Execution State Change",
"source": "aws.codepipeline",
"account": 123456789012,
"time": "2020-01-24T22:03:07Z",
"region": "us-east-1",
"resources": [
"arn:aws:codepipeline:us-east-1:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"version": 1.0,
"execution-id": 12345678-1234-5678-abcd-12345678abcd,
"start-time": "2023-10-26T13:49:39.208Z",
"stage": "Prod",
"state": "STARTED",
"pipeline-execution-attempt": 1.0
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Stage Execution State Change",
"region": "us-east-1",
"source": "aws.codepipeline",
"time": "2021-06-24T00:45:40Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-west-2:123456789012:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"stage": "Source",
"state": "STARTED",
"version": 1.0,
"pipeline-execution-attempt": 0.0
},
"resources": [
"arn:aws:codepipeline:us-east-1:123456789012:myPipeline"
],
"additionalAttributes": {
"sourceActions": [
{
"sourceActionName": "Source",
"sourceActionProvider": "CodeCommit",
"sourceActionVariables": {
"BranchName": "main",
"CommitId": "<ID>",
"RepositoryName": "my-repo"
}
}
]
}
}
阶段 STOPPING 事件
在停止阶段执行时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-west-2
区域中名为 myPipeline
的管道的 Deploy
阶段。
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Stage Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-24T22:02:20Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"stage": "Deploy",
"state": "STOPPING",
"version": 3.0,
"pipeline-execution-attempt": 1.0
}
}
阶段 STOPPED 事件
在阶段执行已停止时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-west-2
区域中名为 myPipeline
的管道的 Deploy
阶段。
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Stage Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-31T18:21:39Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:49:39.208Z",
"stage": "Deploy",
"state": "STOPPED",
"version": 3.0,
"pipeline-execution-attempt": 1.0
}
}
阶段重试后的阶段 RESUMED 事件
在阶段恢复执行而且有一个阶段已经重试时,它发出一个事件以发送包含以下内容的通知。
当阶段已重试时,将显示 stage-last-retry-attempt-time
字段,如本例所示。如果执行了重试,则该字段将显示在所有阶段事件上。
阶段重试后,stage-last-retry-attempt-time
字段将显示在所有后续阶段事件中。
{
"version": "0",
"id": "38656bcd-a798-5f92-c738-02a71be484e1",
"detail-type": "CodePipeline Stage Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2023-10-26T14:14:56Z",
"region": "eu-central-1",
"resources": [
"arn:aws:codepipeline:eu-central-1:123456789012:BuildFromTag"
],
"detail": {
"pipeline": "BuildFromTag",
"execution-id": "05dafb6a-5a56-4951-a858-968795364846",
"stage-last-retry-attempt-time": "2023-10-26T14:14:56.305Z",
"stage": "Build",
"state": "RESUMED",
"version": 32.0,
"pipeline-execution-attempt": 2.0
}
}
操作级事件
当操作执行状态发生变化时,就会发出操作级事件。
操作 STARTED 事件
在启动操作执行时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-east-1
区域中名为 myPipeline
的管道的部署操作 myAction
。
- Emitted event
-
{
"version": "0",
"id": 01234567-EXAMPLE,
"detail-type": "CodePipeline Action Execution State Change",
"source": "aws.codepipeline",
"account": 123456789012,
"time": "2020-01-24T22:03:07Z",
"region": "us-east-1",
"resources": [
"arn:aws:codepipeline:us-east-1:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": 12345678-1234-5678-abcd-12345678abcd,
"start-time": "2023-10-26T13:51:09.981Z",
"stage": "Prod",
"action-execution-id": "47f821c5-a902-44b2-ae61-b878d31ecd21",
"action": "myAction",
"state": "STARTED",
"type": {
"owner": "AWS",
"category": "Deploy",
"provider": "CodeDeploy",
"version": "1"
},
"version": 2.0
"pipeline-execution-attempt": 1.0
"input-artifacts": [
{
"name": "SourceArtifact",
"s3location": {
"bucket": "codepipeline-us-east-1-BUCKETEXAMPLE",
"key": "myPipeline/SourceArti/KEYEXAMPLE"
}
}
]
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Action Execution State Change",
"region": "us-west-2",
"source": "aws.codepipeline",
"time": "2021-06-24T00:45:44Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-west-2:123456789012:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:51:09.981Z",
"stage": "Deploy",
"action-execution-id": "47f821c5-a902-44b2-ae61-b878d31ecd21",
"action": "Deploy",
"input-artifacts": [
{
"name": "SourceArtifact",
"s3location": {
"bucket": "codepipeline-us-east-1-EXAMPLE",
"key": "myPipeline/SourceArti/EXAMPLE"
}
}
],
"state": "STARTED",
"region": "us-east-1",
"type": {
"owner": "AWS",
"provider": "CodeDeploy",
"category": "Deploy",
"version": "1"
},
"version": 1.0,
"pipeline-execution-attempt": 1.0
},
"resources": [
"arn:aws:codepipeline:us-east-1:123456789012:myPipeline"
],
"additionalAttributes": {}
}
操作 SUCCEEDED 事件
在操作执行成功时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-west-2
区域中名为 "myPipeline"
的管道的源操作 "Source"
。对于这种事件类型,有两个不同的 region
字段。事件 region
字段指定管道事件的区域。detail
部分下的 region
字段指定操作的区域。
- Emitted event
-
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Action Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-24T22:03:11Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:51:09.981Z",
"stage": "Source",
"execution-result": {
"external-execution-url": "https://us-west-2.console.aws.amazon.com/codecommit/home#/repository/my-repo/commit/8cf40f2EXAMPLE",
"external-execution-summary": "Added LICENSE.txt",
"external-execution-id": "8cf40fEXAMPLE"
},
"output-artifacts": [
{
"name": "SourceArtifact",
"s3location": {
"bucket": "codepipeline-us-west-2-BUCKETEXAMPLE",
"key": "myPipeline/SourceArti/KEYEXAMPLE"
}
}
],
"action-execution-id": "47f821c5-a902-44b2-ae61-b878d31ecd21",
"action": "Source",
"state": "SUCCEEDED",
"region": "us-west-2",
"type": {
"owner": "AWS",
"provider": "CodeCommit",
"category": "Source",
"version": "1"
},
"version": 3.0,
"pipeline-execution-attempt": 1.0
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Action Execution State Change",
"region": "us-west-2",
"source": "aws.codepipeline",
"time": "2021-06-24T00:45:44Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-west-2:ACCOUNT:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "arn:aws:codepipeline:us-west-2:123456789012:myPipeline",
"start-time": "2023-10-26T13:51:09.981Z",
"stage": "Source",
"execution-result": {
"external-execution-url": "https://us-west-2.console.aws.amazon.com/codecommit/home#/repository/my-repo/commit/8cf40f2EXAMPLE",
"external-execution-summary": "Edited index.html",
"external-execution-id": "36ab3ab7EXAMPLE"
},
"output-artifacts": [
{
"name": "SourceArtifact",
"s3location": {
"bucket": "codepipeline-us-west-2-EXAMPLE",
"key": "myPipeline/SourceArti/EXAMPLE"
}
}
],
"action-execution-id": "47f821c5-a902-44b2-ae61-b878d31ecd21",
"action": "Source",
"state": "SUCCEEDED",
"region": "us-west-2",
"type": {
"owner": "AWS",
"provider": "CodeCommit",
"category": "Source",
"version": "1"
},
"version": 1.0,
"pipeline-execution-attempt": 1.0
},
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"additionalAttributes": {}
}
操作 FAILED 事件
在操作执行失败时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-west-2
区域中名为 "myPipeline"
的管道的 "Deploy"
操作。
- Emitted event
-
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Action Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-31T18:55:43Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"start-time": "2023-10-26T13:51:09.981Z",
"stage": "Deploy",
"execution-result": {
"external-execution-url": "https://us-west-2.console.aws.amazon.com/codedeploy/home?#/deployments/<ID>",
"external-execution-summary": "Deployment <ID> failed",
"external-execution-id": "<ID>",
"error-code": "JobFailed"
},
"action-execution-id": "47f821c5-a902-44b2-ae61-b878d31ecd21",
"action": "Deploy",
"state": "FAILED",
"region": "us-west-2",
"type": {
"owner": "AWS",
"provider": "CodeDeploy",
"category": "Deploy",
"version": "1"
},
"version": 4.0,
"pipeline-execution-attempt": 1.0
}
}
- Processed event
-
{
"account": "123456789012",
"detailType": "CodePipeline Action Execution State Change",
"region": "us-west-2",
"source": "aws.codepipeline",
"time": "2021-06-24T00:46:16Z",
"notificationRuleArn": "arn:aws:codestar-notifications:us-west-2:123456789012:notificationrule/a69c62c21EXAMPLE",
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"stage": "Deploy",
"execution-result": {
"external-execution-url": "https://console.aws.amazon.com/codedeploy/home?region=us-west-2#/deployments/<ID>",
"external-execution-summary": "Deployment <ID> failed",
"external-execution-id": "<ID>",
"error-code": "JobFailed"
},
"action-execution-id": "47f821c5-a902-44b2-ae61-b878d31ecd21",
"action": "Deploy",
"state": "FAILED",
"region": "us-west-2",
"type": {
"owner": "AWS",
"provider": "CodeDeploy",
"category": "Deploy",
"version": "1"
},
"version": 13.0,
"pipeline-execution-attempt": 1.0
},
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"additionalAttributes": {
"additionalInformation": "Deployment <ID> failed"
}
}
操作 ABANDONED 事件
在放弃操作执行时,它发出一个事件以发送包含以下内容的通知。此示例适用于 us-west-2
区域中名为 "myPipeline"
的管道的 "Deploy"
操作。
{
"version": "0",
"id": "01234567-EXAMPLE",
"detail-type": "CodePipeline Action Execution State Change",
"source": "aws.codepipeline",
"account": "123456789012",
"time": "2020-01-31T18:21:39Z",
"region": "us-west-2",
"resources": [
"arn:aws:codepipeline:us-west-2:123456789012:myPipeline"
],
"detail": {
"pipeline": "myPipeline",
"execution-id": "12345678-1234-5678-abcd-12345678abcd",
"stage": "Deploy",
"action-execution-id": "47f821c5-a902-44b2-ae61-b878d31ecd21",
"action": "Deploy",
"state": "ABANDONED",
"region": "us-west-2",
"type": {
"owner": "AWS",
"provider": "CodeDeploy",
"category": "Deploy",
"version": "1"
},
"version": 3.0,
"pipeline-execution-attempt": 1.0
}
}
创建发送管道事件通知的规则
规则会监视某些事件,然后将其路由到您选择的 Amazon 目标。您可以创建在发生其他 Amazon 操作时自动执行 Amazon 操作的规则,也可以创建按设定的时间表定期执行 Amazon 操作的规则。
当管道状态发生更改时发送通知(控制台)
这些步骤说明了如何使用 EventBridge 控制台创建规则以发送 CodePipeline 中的更改通知。
创建以具有 Amazon S3 源的管道为目标的 EventBridge 规则
打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。
-
在导航窗格中,选择规则。保留选中的默认总线或选择一个事件总线。选择创建规则。
-
在名称中,输入规则的名称。
-
对于规则类型,选择具有事件模式的规则。选择下一步。
-
在事件模式下,选择 Amazon 服务。
-
从事件类型下拉列表中,选择通知的状态更改级别。
-
对于适用于管道级别事件的规则,请选择 CodePipeline 管道执行状态更改。
-
对于适用于阶段级别事件的规则,请选择 CodePipeline 阶段执行状态更改。
-
对于适用于操作级别事件的规则,请选择 CodePipeline 操作执行状态更改。
-
指定规则适用的状态更改:
-
对于比选择器允许的级别更详细的事件模式,您也可以使用事件模式窗口中的编辑模式选项指定 JSON 格式的事件模式。
如果未另行指定,则为所有管道/阶段/操作和状态创建事件模式。
有关更详细的事件模式,您可以复制以下示例事件模式并粘贴到事件模式窗口中。
-
可以使用该示例事件模式在所有管道中捕获失败的部署和生成操作。
{
"source": [
"aws.codepipeline"
],
"detail-type": [
"CodePipeline Action Execution State Change"
],
"detail": {
"state": [
"FAILED"
],
"type": {
"category": ["Deploy", "Build"]
}
}
}
-
可以使用该示例事件模式在所有管道中捕获所有拒绝或失败的审批操作。
{
"source": [
"aws.codepipeline"
],
"detail-type": [
"CodePipeline Action Execution State Change"
],
"detail": {
"state": [
"FAILED"
],
"type": {
"category": ["Approval"]
}
}
}
-
可以使用该示例事件模式从指定的管道中捕获所有事件。
{
"source": [
"aws.codepipeline"
],
"detail-type": [
"CodePipeline Pipeline Execution State Change",
"CodePipeline Action Execution State Change",
"CodePipeline Stage Execution State Change"
],
"detail": {
"pipeline": ["myPipeline", "my2ndPipeline"]
}
}
-
选择下一步。
-
在目标类型中,选择 Amazon 服务。
-
在选择目标中,选择 CodePipeline。在管道 ARN 中,输入该规则启动的管道的管道 ARN。
要获取管道 ARN,请运行 get-pipeline 命令。管道 ARN 将显示在输出中。它是使用以下格式构造的:
arn:aws:codepipeline:region
:account
:pipeline-name
示例管道 ARN:
arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline
-
要创建或指定一个 IAM 服务角色,该角色向 EventBridge 授予权限以调用与 EventBridge 规则关联的目标(在此示例中,目标为 CodePipeline),请执行以下操作:
-
选择下一步。
-
在标签页面上,选择下一步。
-
在查看和创建页面上,检查规则配置。如果您对规则满意,请选择 Create rule。
当管道状态发生更改时发送通知 (CLI)
这些步骤说明了如何使用 CLI 创建 CloudWatch Events 规则以发送 CodePipeline 中的更改通知。
要使用 Amazon CLI 创建规则,请调用 put-rule 命令,并指定:
使用 CodePipeline 作为事件源创建 EventBridge 规则
-
调用 put-rule 命令以创建一个规则,从而指定事件模式。(请参阅上表以了解有效的状态。)
以下示例命令使用 --event-pattern 创建名为 “MyPipelineStateChanges”
的规则,以便在名为“myPipeline”的管道执行失败时发出 CloudWatch 事件。
aws events put-rule --name "MyPipelineStateChanges" --event-pattern "{\"source\":[\"aws.codepipeline\"],\"detail-type\":[\"CodePipeline Pipeline Execution State Change\"],\"detail\":{\"pipeline\":[\"myPipeline\"],\"state\":[\"FAILED\"]}}"
-
调用 put-targets 命令并包含以下参数:
以下示例命令为名为 MyPipelineStateChanges
的规则指定此内容,目标 Id
由数字 1 组成,这指示此内容位于规则的目标列表中,而这是目标 1。示例命令还为 Amazon SNS 主题指定一个示例 ARN
。
aws events put-targets --rule MyPipelineStateChanges --targets Id=1,Arn=arn:aws:sns:us-west-2:11111EXAMPLE:MyNotificationTopic
-
为 EventBridge 添加权限以使用指定的目标服务调用通知。有关更多信息,请参阅针对 Amazon EventBridge 使用基于资源的策略。