本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
建一个Amazon CodeBuild项目 (CodeBuild,Amazon SNS)
此示例项目演示了如何使用Amazon Step Functions建一个Amazon CodeBuild项目,运行测试,然后发送 Amazon SNS通知。
步骤 1:创建状态机并配置资源
-
打开Step Function 控制台
然后选择创建状态机。 -
类型
Start a CodeBuild build
在搜索框中,选择开始一个 CodeBuild 构建从返回的搜索结果中。 -
选择 Next(下一步)以继续。
-
Step Functions 列出了Amazon Web Services在您选择的示例项目中使用。它还显示了示例项目的工作流程图。将此项目部署到你的Amazon Web Services 账户或者使用它作为构建自己的项目的起点。根据您想要的操作方式,选择运行演示要么在此基础上再接再厉。
此示例项目部署了以下资源:
-
一个Amazon CodeBuild构建
-
一个 Amazon SNS 主题
-
Amazon Step Functions 状态机
-
相关Amazon Identity and Access Management(IAM) 角色
下图显示了的工作流程图开始一个 CodeBuild 构建示例项目:
-
-
选择使用模板继续进行选择。
-
请执行下列操作之一:
-
如果你选择了在此基础上再接再厉,Step Functions 会为您选择的示例项目创建工作流程原型。Step Functions 不会部署工作流程定义中列出的资源。
在工作流工作室中设计模式,从中拖放状态States 浏览器继续构建您的工作流程原型。或者切换到代码模式它提供了一个类似于 VS Code 的集成代码编辑器,用于更新Amazon States Language(ASL) 在 Step Functions 控制台中定义状态机。有关使用 Workflow Studio 构建状态机的更多信息,请参阅使用工作流工作室。
重要
记得在您之前更新示例项目中使用的资源名称(ARN)。运行你的工作流程。
-
如果你选择了运行演示,Step Functions 创建了一个只读的示例项目,该项目使用Amazon CloudFormation用于部署的模板Amazon该模板中列出的资源给你的Amazon Web Services 账户。
提示
要查看示例项目的状态机定义,请选择代码。
准备好后,选择部署并运行部署示例项目并创建资源。
创建这些资源和 IAM 权限最长可能需要 10 分钟。在部署资源时,您可以打开 CloudFormation 堆栈 ID 链接,用于查看正在配置哪些资源。
创建示例项目中的所有资源后,您可以看到新示例项目列在状态机页。
重要
使用的 Amazon Source Name CloudFormation 模板。
-
第 2 步:运行状态机
-
在状态机页面上,选择您的示例项目。
-
在示例项目页面上,选择开始执行。
-
在开始执行对话框中,执行以下操作:
-
(可选)要识别您的执行,可以在中为其指定一个名称姓名盒子。默认情况下,Step Functions 会自动生成一个唯一的执行名称。
注意
Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊 CloudWatch。为了确保你可以追踪 CloudWatch 指标,请选择一个仅使用 ASCII 字符的名称。
-
(可选)在输入框中,输入 JSON 格式的输入值以运行您的工作流程。
如果你选择运行演示,您无需提供任何执行输入。
注意
如果您部署的演示项目包含预先填充的执行输入数据,请使用该输入来运行状态机。
-
选择 Start execution (开始执行)。
-
Step Functions 控制台会将你引导到标题为你的执行 ID 的页面。这个页面被称为执行细节页。在此页面上,您可以随着执行的进展或执行完成后查看执行结果。
要查看执行结果,请在上选择各个状态图表视图,然后,选择上的各个选项卡步骤详情窗格可分别查看每个状态的详细信息,包括输入、输出和定义。有关执行信息的详细信息,您可以在执行细节页面,请参阅执行详细信息页面-界面概述。
-
示例状态机代码
此示例项目中的状态机集成了 CodeBuild 和 Amazon SNS。
浏览此示例状态机,了解 Step Functions 如何使用状态机来构建 CodeBuild 项目,然后发送一个 Amazon SNS 主题,其中包含一条关于任务成功还是失败的消息。
有关 Step Functions 如何控制其他Amazon服务,请参阅将 Amazon 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 与其他函数一起使用时如何配置 IAMAmazon服务,请参阅集成服务的 IAM 政策。