本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管理容器任务(Amazon ECS、Amazon SNS)
此示例项目演示了如何运行Amazon Fargate任务,然后根据该任务是成功还是失败发送 Amazon SNS 通知。部署此示例项目将创建Amazon Step Functions状态机、Fargate 集群和 Amazon SNS 主题。
在此项目中,Step Functions 使用状态机同步调用 Fargate 任务。然后它等待任务成功或失败,并发送一个 Amazon SNS 主题,其中包含有关任务是成功还是失败的消息。
创建状态机并预置资源
-
打开Step Functions 控制台
然后选择创建状态机. -
选择 Sample Projects (示例项目),然后选择 Manage a container task (管理容器任务)。
此时将显示状态机 Code (代码) 和 Visual Workflow (可视工作流程)。
-
请选择 Next (下一步)。
此时将显示 Deploy resources (部署资源) 页面,其中列出了将创建的资源。对于本示例项目,资源包括:
-
Fargate 集群
-
一个 Amazon SNS 主题
-
-
选择 Deploy Resources (部署资源)。
注意 创建这些资源和相关 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 Fargate和 Amazon SNS 通过将参数直接传递给这些资源来实现。浏览此状态机示例,了解 Step Functions 如何使用状态机同步调用 Fargate 任务,等待任务成功或失败,并发送一个包含有关作业是成功还是失败的消息的 Amazon SNS 主题。
有关 Amazon Step Functions 如何控制其他 Amazon 服务的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用。
{
"Comment": "An example of the Amazon States Language for notification on an AWS Fargate task completion",
"StartAt": "Run Fargate Task",
"TimeoutSeconds": 3600,
"States": {
"Run Fargate Task": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"LaunchType": "FARGATE",
"Cluster": "arn:aws:ecs:ap-northeast-1:123456789012:cluster/FargateTaskNotification-ECSCluster-VHLR20IF9IMP",
"TaskDefinition": "arn:aws:ecs:ap-northeast-1:123456789012:task-definition/FargateTaskNotification-ECSTaskDefinition-13YOJT8Z2LY5Q:1",
"NetworkConfiguration": {
"AwsvpcConfiguration": {
"Subnets": [
"subnet-07e1ad3abcfce6758",
"subnet-04782e7f34ae3efdb"
],
"AssignPublicIp": "ENABLED"
}
}
},
"Next": "Notify Success",
"Catch": [
{
"ErrorEquals": [ "States.ALL" ],
"Next": "Notify Failure"
}
]
},
"Notify Success": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"Message": "AWS Fargate Task started by Step Functions succeeded",
"TopicArn": "arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C"
},
"End": true
},
"Notify Failure": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"Message": "AWS Fargate Task started by Step Functions failed",
"TopicArn": "arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C"
},
"End": true
}
}
}
IAM 示例 IAM
此示例Amazon Identity and Access Management示例项目生成的 (IAM) 策略包括执行状态机和相关资源所需的最小权限。最佳实践是在您的 IAM 策略仅包含这些必需的权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C"
],
"Effect": "Allow"
},
{
"Action": [
"ecs:RunTask"
],
"Resource": [
"arn:aws:ecs:ap-northeast-1:123456789012:task-definition/FargateTaskNotification-ECSTaskDefinition-13YOJT8Z2LY5Q:1"
],
"Effect": "Allow"
},
{
"Action": [
"ecs:StopTask",
"ecs:DescribeTasks"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:ap-northeast-1:123456789012:rule/StepFunctionsGetEventsForECSTaskRule"
],
"Effect": "Allow"
}
]
}
有关在将 Step Functions 与其他配置时如何配置 IAM 的信息。Amazon服务,请参阅集成服务的 IAM 政策.