Настройка ресурса Arn из вывода шага функции шага AWS - PullRequest
0 голосов
/ 30 мая 2019

У меня есть пошаговая функция, с которой я хочу начать с получения 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"
  }
}

Но это интерпретирует кластер arn как "$ .arn". Как я могу сослаться на арн, только что полученный от первого задания?

1 Ответ

1 голос
/ 30 мая 2019

Из документации :

Используйте поле «Параметры», чтобы создать коллекцию пар ключ-значение, которые передаются в качестве ввода.Значения каждого из них могут быть статическими значениями, которые вы включаете в определение конечного автомата, или выбираться из входного или контекстного объекта с путем.Для пар ключ-значение, где значение выбирается с использованием пути, имя ключа должно заканчиваться на. $ .

Поэтому я думаю, что вам нужно:

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