本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
建一个 AWS CodeBuild 使用 Step Functions 的项目
此示例项目演示了如何使用 AWS Step Functions 建一个 AWS CodeBuild 项目,运行测试,然后根据结果发送 Amazon SNS 通知。
第 1 步:创建状态机
-
打开 Step Functions 控制台
,然后选择创建状态机。 -
Start a CodeBuild build
在搜索框中键入,然后从返回的搜索结果中选择 “启动 CodeBuild 构建”。 -
选择下一步以继续。
-
选择 “运行演示” 以创建只读和 ready-to-deploy 工作流程,或者选择 “在其上构建” 以创建可编辑的状态机定义,您可以在此基础上构建并稍后部署。
该示例项目部署了以下资源:
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的 AWS CodeBuild build
-
亚马逊的SNS话题
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的 AWS Step Functions 状态机
-
相关 AWS Identity and Access Management (IAM) 角色
下图显示了 “启动 CodeBuild 构建” 示例项目的工作流程图:
-
-
选择使用模板继续进行选择。
后续步骤取决于您之前的选择:
-
运行演示 — 您可以先查看状态机,然后再使用部署的资源创建只读项目 AWS CloudFormation 给你的 AWS 账户.
您可以查看状态机定义,准备就绪后,选择部署并运行以部署项目并创建资源。
部署最多可能需要 10 分钟才能创建资源和权限。您可以使用堆栈 ID 链接来监控进度 AWS CloudFormation.
部署完成后,您应该会在控制台中看到您的新状态机。
-
在此基础上再接再厉 — 您可以查看和编辑工作流程定义。在尝试运行自定义工作流程之前,您可能需要为示例项目中的占位符设置值。
注意
部署到您的账户的服务可能会收取标准费用。
第 2 步:运行状态机
-
在状态机页面上,选择您的示例项目。
-
在示例项目页面上,选择启动执行。
-
在启动执行对话框中,执行以下操作:
-
(可选)输入自定义执行名称以覆盖生成的默认值。
非ASCII姓名和日志
Step Functions 接受状态机、执行、活动和包含非ASCII字符的标签的名称。由于此类字符不适用于亚马逊 CloudWatch,因此我们建议您仅使用ASCII字符,以便您可以跟踪中的指标 CloudWatch。
-
(可选)在输入框中,将输入值输入为JSON。如果您正在运行演示,则可以跳过此步骤。
-
选择启动执行。
Step Functions 控制台将引导您进入执行详情页面,您可以在图表视图中选择状态以浏览步骤详细信息窗格中的相关信息。
-
示例状态机代码
此示例项目中的状态机与 CodeBuild 和 Amazon 集成SNS。
浏览此示例状态机,了解 Step Functions 如何使用状态机构建 CodeBuild 项目,然后向亚马逊SNS主题发送一条关于任务成功还是失败的消息。
有关 Step Functions 如何控制其他 AWS 服务,请参阅将服务与 Step Functions 集成。
{
"Comment": "An example of using CodeBuild to run tests, get test results and send a notification.",
"StartAt": "Trigger CodeBuild Build",
"States": {
"Trigger CodeBuild Build": {
"Type": "Task",
"Resource": "arn:aws:states:::codebuild:startBuild.sync",
"Parameters": {
"ProjectName": "CodeBuildProject-Dtw1jBhEYGDf"
},
"Next": "Get Test Results"
},
"Get Test Results": {
"Type": "Task",
"Resource": "arn:aws:states:::codebuild:batchGetReports",
"Parameters": {
"ReportArns.$": "$.Build.ReportArns"
},
"Next": "All Tests Passed?"
},
"All Tests Passed?": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.Reports[0].Status",
"StringEquals": "SUCCEEDED",
"Next": "Notify Success"
}
],
"Default": "Notify Failure"
},
"Notify Success": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"Message": "CodeBuild build tests succeeded",
"TopicArn": "arn:aws:sns:sa-east-1:123456789012:StepFunctionsSample-CodeBuildExecution3da9ead6-bc1f-4441-99ac-591c140019c4-SNSTopic-EVYLVNGW85JP"
},
"End": true
},
"Notify Failure": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"Message": "CodeBuild build tests failed",
"TopicArn": "arn:aws:sns:sa-east-1:123456789012:StepFunctionsSample-CodeBuildExecution3da9ead6-bc1f-4441-99ac-591c140019c4-SNSTopic-EVYLVNGW85JP"
},
"End": true
}
}
}
有关在将 Step Functions 与其他功能一起使用IAM时如何进行配置的信息 AWS 服务,请参阅Step Functions 如何为集成服务生成IAM策略。