从AWS Step Function步骤的输出设置资源Arn

时间:2019-05-30 17:11:05

标签: amazon-web-services aws-step-functions

我有一个步进功能,我想从那里获取ECS群集的resourceArn,然后在该群集上调用任务。

但是,我很难一步一步地动态传递arn。

{
 "StartAt": "GetArnLambda",
 "States": {
   "GetArnLambda": {
     "Type": "Task",
     "Resource": "arn:aws:lambda:us-east-1:AWS_ACCOUNT_ID:function:FUNCTION_NAME",
     "Next": "ecs_task"
   },
   "ecs_task": {
     "Type": "Task",
     "Resource": "arn:aws:states:::ecs:runTask.sync",
     "Parameters": {
                "Cluster": "$.arn",
                "TaskDefinition": "ecs_task_def"
            },
     "End": true
    } 
}

我从GetArnLambda

得到了输出
{
  "name": "GetArnLambda",
  "output": {
    "arn": "arn:aws:ecs:us-east-1:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME"
  }
}

但这将Cluster arn解释为“ $ .arn”。如何引用我刚从第一个任务中收到的信息?

1 个答案:

答案 0 :(得分:1)

来自documentation

  

使用“参数”字段创建作为输入传递的键值对的集合。每个值都可以是您包含在状态机定义中的静态值,也可以是从输入或带有路径的上下文对象中选择的。对于使用路径选择值的键值对,键名必须以。$ 结尾。

所以我认为您需要:

 "Parameters": {
            "Cluster.$": "$.arn",
            "TaskDefinition": "ecs_task_def"
        },