У меня есть пошаговая функция, в которой я хочу начать с получения resourceArn для кластера ECS, а затем вызвать задачи в этом кластере.
Однако у меня возникают трудности с динамическим переходом арна от шага к шагу.
{
"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». Как я могу сослаться на арм, который я только что получил из первой задачи?





Из документация:
Use "Parameters" field to create a collection of key-value pairs that are passed as input. The values of each can either be static values that you include in your state machine definition, or selected from either the input or the context object with a path. For key-value pairs where the value is selected using a path, the key name must end in .$.
Итак, я думаю, вам нужно:
"Parameters": {
"Cluster.$": "$.arn",
"TaskDefinition": "ecs_task_def"
},