本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
扇出Amazon Batch工作
此示例项目演示如何使用 Step Functions 的 Map 状态来粉出。Amazon Batch个作业。部署此示例项目将创建Amazon Step Functions状态机、Lambda 函数和Amazon Batch作业队列。
在本项目中,Step Functions 使用状态机调用 Lambda 函数来执行简单的预处理,然后调用多个Amazon Batch使用地图状态并行作业。
创建状态机并预置资源
-
打开扇出Amazon Batch工作
样品项目。状态机代码和可视工作流此时将显示。 -
请选择 Next (下一步)。
这些区域有:部署和运行此时将显示此页面,其中列出了将创建的资源。对于本示例项目,资源包括:
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Batch作业队列
-
Lambda 函数
-
-
选择部署和运行.
注意 创建这些资源和相关 IAM 权限可能需要长达 10 分钟的时间。当显示 Deploy resources (部署资源) 页面时,您可打开 Stack ID (堆栈 ID) 链接以查看正在预置的资源。
启动新的执行
-
在 New execution 页面上,输入执行名称 (可选),然后选择 Start Execution (开始执行)。
(可选)要识别您的执行,您可以在名称。默认情况下,Step Functions 会自动生成唯一的执行名称。
注意 Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊CloudWatch. 为了确保你可以跟踪CloudWatch指标,请选择仅使用 ASCII 字符的名称。
-
(可选)您可以转到 Step Functions (步骤函数) 上新创建的状态机。控制面板,然后选择新的执行.
-
执行完成后,您可以在 Visual workflow (可视工作流) 上选择状态,并浏览 Step details (步骤详细信息) 下的 Input (输入) 和 Output (输出)。
示例状态机代码
此示例项目中的状态机与Amazon Batch通过将参数直接传递给这些资源来和 Amazon SNS。
浏览此示例状态机以了解 Step Functions 如何控制。Amazon Batch通过连接到中的 Amazon 资源名称 (ARN) 和 Amazon SNSResource
字段,然后通过Parameters
转到服务 API。
有关 Amazon Step Functions 如何控制其他 Amazon 服务的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用。
{
"Comment": "An example of the Amazon States Language for fanning out Amazon Batch job",
"StartAt": "Generate batch job input",
"TimeoutSeconds": 3600,
"States": {
"Generate batch job input": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"FunctionName": "<GENERATE_BATCH_JOB_INPUT_LAMBDA_FUNCTION_NAME>
"
},
"Next": "Fan out batch jobs"
},
"Fan out batch jobs": {
"Comment": "Start multiple executions of batch job depending on pre-processed data",
"Type": "Map",
"End": true,
"ItemsPath": "$",
"Parameters": {
"BatchNumber.$": "$$.Map.Item.Value"
},
"Iterator": {
"StartAt": "Submit Batch Job",
"States": {
"Submit Batch Job": {
"Type": "Task",
"Resource": "arn:aws:states:::batch:submitJob.sync",
"Parameters": {
"JobName": "BatchJobFanOut",
"JobQueue": "<BATCH_QUEUE_ARN>
",
"JobDefinition": "<BATCH_JOB_DEFINITION_ARN>
"
},
"End": true
}
}
}
}
}
}
IAM 示例
这些示例Amazon Identity and Access Management示例项目生成的 (IAM) 策略包括执行状态机和相关资源所需的最小权限。我们建议在 IAM 策略中仅包含这些必需的权限。
例 BatchJobFanOutAccessPolicy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"batch:SubmitJob",
"batch:DescribeJobs",
"batch:TerminateJob"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:us-west-2
:123456789012
:rule/StepFunctionsGetEventsForBatchJobsRule"
],
"Effect": "Allow"
}
]
}
例 InvokeGenerateBatchJobMapLambdaPolicy
{ "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:
us-west-2
:123456789012
:function:StepFunctionsSample-BatchJobFa-GenerateBatchJobMap-444455556666
", "Effect": "Allow" } ] }
有关在将 Step Functions 与其他一起使用时如何配置 IAM 的信息Amazon服务,请参阅集成服务的 IAM 政策.