使用 Step Functions 管理 AWS CodeBuild 构建
可以将 Step Functions 与 AWS CodeBuild 集成来启动、停止和管理构建。本页列出了可以与 Step Functions 结合使用的受支持的 CodeBuild API。
要了解如何在 Step Functions 中与 AWS 服务集成,请参阅集成 服务和在 Step Functions 中将参数传递给服务 API。
通过将 Step Functions 与 AWS CodeBuild 集成,可以使用 Step Functions 来触发、停止和管理构建以及共享构建报告。使用 Step Functions,您可以设计和运行持续的集成管道,以验证应用程序的软件更改。
经优化的 CodeBuild 集成的主要功能
-
支持运行作业 (.sync) 集成模式。
-
调用
StopBuild或StopBuildBatch后,构建或构建批处理将无法立即删除,直到 CodeBuild 完成一些内部工作以最终完成构建或构建批处理的状态。如果您在此期间尝试使用
BatchDeleteBuilds或DeleteBuildBatch,则可能无法删除构建或构建批处理。BatchDeleteBuilds和DeleteBuildBatch的优化服务集成包括内部重试,以简化停止后立即删除的用例。
并非所有 API 都支持所有集成模式,如下表所示。
| API | 请求响应 | 运行作业 (.sync) |
|---|---|---|
| StartBuild | 支持 | 支持 |
| StopBuild | 支持 | 不支持 |
| BatchDeleteBuilds | 支持 | 不支持 |
| BatchGetReports | 支持 | 不支持 |
| StartBuildBatch | 支持 | 支持 |
| StopBuildBatch | 支持 | 不支持 |
| RetryBuildBatch | 支持 | 支持 |
| DeleteBuildBatch | 支持 | 不支持 |
Step Functions 中的参数以 PascalCase 表示
即使原生服务 API 采用 camelCase(例如 API 操作 startSyncExecution),也可以采用 PascalCase 指定参数,例如:StateMachineArn。
经优化的 CodeBuild API
注意
使用 JSONPath 时,您可以使用递归下降运算符(..)为 BatchDeleteBuilds 提供参数。借助返回的数组,可以将 Arn 字段从 StartBuild 转换为复数 Ids 参数,如以下示例所示。
"BatchDeleteBuilds": {
"Type": "Task",
"Resource": "arn:aws:states:::codebuild:batchDeleteBuilds",
"Arguments": {
"Ids.$": "$.Build..Arn"
},
"Next": "MyNextState"
},用于调用 AWS CodeBuild 的 IAM 策略
以下示例模板展示了 AWS Step Functions 如何根据状态机定义中的资源生成 IAM 策略。有关更多信息,请参阅Step Functions 如何为集成服务生成 IAM 策略和探索 Step Functions 中的服务集成模式。
资源。
-
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:sa-east-1:123456789012:StepFunctionsSample-CodeBuildExecution1111-2222-3333-wJalrXUtnFEMI-SNSTopic-bPxRfiCYEXAMPLEKEY" ], "Effect": "Allow" }, { "Action": [ "codebuild:StartBuild", "codebuild:StopBuild", "codebuild:BatchGetBuilds", "codebuild:BatchGetReports" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:sa-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule" ], "Effect": "Allow" } ] }
StartBuild
静态资源
动态资源
StopBuild
静态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StopBuild" ], "Resource": [ "arn:aws:codebuild:us-east-1:123456789012:project/" ] } ] }myProjectName
动态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StopBuild" ], "Resource": [ "arn:aws:codebuild:us-east-1:*:project/*" ] } ] }
BatchDeleteBuilds
静态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:BatchDeleteBuilds" ], "Resource": [ "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName" ] } ] }
动态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:BatchDeleteBuilds" ], "Resource": [ "arn:aws:codebuild:us-east-1:*:project/*" ] } ] }
BatchGetReports
静态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:BatchGetReports" ], "Resource": [ "arn:aws:codebuild:us-east-1:123456789012:report-group/myReportName" ] } ] }
动态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:BatchGetReports" ], "Resource": [ "arn:aws:codebuild:us-east-1:*:report-group/*" ] } ] }
StartBuildBatch
静态资源
动态资源
StopBuildBatch
静态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StopBuildBatch" ], "Resource": [ "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName" ] } ] }
动态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StopBuildBatch" ], "Resource": [ "arn:aws:codebuild:us-east-1:123456789012:project/*" ] } ] }
RetryBuildBatch
静态资源
动态资源
DeleteBuildBatch
静态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:DeleteBuildBatch" ], "Resource": [ "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName" ] } ] }
动态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:DeleteBuildBatch" ], "Resource": [ "arn:aws:codebuild:us-east-1:123456789012:project/*" ] } ] }