本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Manage AWS CodeBuild 使用 Step Functions 构建
你可以将 Step Functions 与 AWS CodeBuild 启动、停止和管理构建。本页列出了 CodeBuild APIs可以与 Step Functions 配合使用的支持功能。
要了解如何与集成 AWS Step Functions 中的服务,参见集成 服务和。在 Step Functions API 中向服务传递参数
通过 Step Functions 与 AWS CodeBuild 您可以使用 Step Functions 触发、停止和管理构建,以及共享生成报告。使用 Step Functions,您可以设计和运行持续的集成管道,以验证应用程序的软件更改。
优化 CodeBuild 集成的关键特性
-
支持运行作业 (.sync) 集成模式。
-
调用
StopBuild
或后StopBuildBatch
,只有在内部完成一些内部工作 CodeBuild 以最终确定一个或多个生成状态后,才能立即删除生成或生成批次。如果您在此期间尝试使用
BatchDeleteBuilds
或DeleteBuildBatch
,则可能无法删除构建或构建批处理。BatchDeleteBuilds
和DeleteBuildBatch
的优化服务集成包括内部重试,以简化停止后立即删除的用例。
并非所有集成模式都APIs支持所有集成模式,如下表所示。
API | 请求响应 | 运行作业 (.sync) |
---|---|---|
StartBuild | 支持 | 支持 |
StopBuild | 支持 | 不支持 |
BatchDeleteBuilds | 支持 | 不支持 |
BatchGetReports | 支持 | 不支持 |
StartBuildBatch | 支持 | 支持 |
StopBuildBatch | 支持 | 不支持 |
RetryBuildBatch | 支持 | 支持 |
DeleteBuildBatch | 支持 | 不支持 |
中的参数 Step Functions 表示为 PascalCase
即使原生服务API已在camelCase(例如API操作)中startSyncExecution
,您也可以在中指定参数 PascalCase,例如:StateMachineArn
。
支持的 CodeBuild APIs
-
-
支持的参数:
-
-
-
支持的参数:
-
注意
您可以对 BatchDeleteBuilds
使用 JSONPath
递归下降 (..
) 运算符。使用返回的数组,您可以将Arn
字段从StartBuild
转换为复数Ids
参数,如以下示例所示。
"BatchDeleteBuilds": {
"Type": "Task",
"Resource": "arn:aws:states:::codebuild:batchDeleteBuilds",
"Parameters": {
"Ids.$": "$.Build..
Arn"
},
"Next": "MyNextState"
},
IAM通话政策 AWS CodeBuild
以下示例模板演示了如何操作 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:[[region]]
:[[accountId]]
:project/[[projectName]]
"
]
}
]
}
动态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:StopBuild"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:*:project/*"
]
}
]
}
BatchDeleteBuilds
静态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:BatchDeleteBuilds"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:[[accountId]]
:project/[[projectName]]
"
]
}
]
}
动态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:BatchDeleteBuilds"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:*:project/*"
]
}
]
}
BatchGetReports
静态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:BatchGetReports"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:[[accountId]]
:report-group/[[reportName]]
"
]
}
]
}
动态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:BatchGetReports"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:*:report-group/*"
]
}
]
}
StartBuildBatch
静态资源
动态资源
StopBuildBatch
静态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:StopBuildBatch"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:[[accountId]]
:project/[[projectName]]
"
]
}
]
}
动态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:StopBuildBatch"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:[[accountId]]
:project/*"
]
}
]
}
RetryBuildBatch
静态资源
动态资源
DeleteBuildBatch
静态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:DeleteBuildBatch"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:[[accountId]]
:project/[[projectName]]
"
]
}
]
}
动态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codebuild:DeleteBuildBatch"
],
"Resource": [
"arn:aws:codebuild:[[region]]
:[[accountId]]
:project/*"
]
}
]
}