Как передать входные данные аргументам задачи в шаговую функцию Map state? - PullRequest
0 голосов
/ 25 января 2020

Я создал конечный автомат для параллельного запуска некоторых заданий Glue / ETL. Я экспериментирую с состоянием карты, чтобы использовать преимущества параллелизма Dynami c. Вот определение функции шага:

{
 "StartAt": "Map",
 "States": {
   "Map": {
     "Type": "Map",
     "InputPath": "$.data",
     "ItemsPath": "$.array",
     "MaxConcurrency": 2,
     "Iterator": {
       "StartAt": "glue job",
       "States": {
         "glue Job": {
           "Type": "Task",
           "Resource": "arn:aws:states:::glue:startJobRun.sync",
           "End": true,
           "Parameters": {
             "JobName": "glue-etl-job",
             "Arguments": {
               "--db": "db-dev",
               "--file": "$.file",
               "--bucket": "$.bucket"
          }
        }
      }
    }
  },
  "Catch": [
    {
      "ErrorEquals": [
        "States.ALL"
      ],
      "Next": "NotifyError"
    }
  ],
  "Next": "NotifySuccess"
},

}
}

Формат ввода, который был передан функции шага, выглядит следующим образом:

{
 "data": {
   "array": [
     {"file": "path-to-file1", "bucket": "bucket-name1"},
     {"file": "path-to-file2", "bucket": "bucket-name2"},
   ]
 }
}

Проблема заключается в file и bucket Аргументы задания не разрешаются, и они передаются в связующее задание, например $.file и $.bucket. Как я могу передать фактические значения аргумента из ввода?

1 Ответ

0 голосов
/ 25 февраля 2020

Вам необходимо добавить в конец параметра «. $» При использовании поля состояния для параметра.

"--file.$": "$.file",
"--bucket.$": "$.bucket"

Для ознакомления с полным руководством ознакомьтесь со спецификацией c. https://states-language.net/spec.html#parameters

...