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

У меня есть шаговая функция AWS, в которую я хотел бы передать значение через вход JSON, включенный при запуске выполнения. Функция Step запускает задание ETL и проверяет его состояние с помощью вызова лямбда-функций, которые выполняют указанные задачи. Лямбда-функция StartGlueJob запускается с помощью ввода JSON JobName. Значение, которое я хотел бы передать, является аргументом для склеиваемого задания с именем 'RegionalCenters', где в этом случае желаемым значением будет 'LA'.

Я пытался, как показано ниже, использовать синтаксис $ .value для передачи из входных данных JSON, но он не работает должным образом, и я не уверен, почему.

Фрагмент лямбда-кода:

let jobInfo = await glue.startJobRun({ JobName: jobName, Arguments: arguments }).promise();

JSON-ввод

{
    "value": "LA"
}

Шаг Функция

{
  "StartAt": "InitStartEtl",
  "States": {
    "InitStartEtl": {
      "Type": "Pass",
      "Result": {
        "jobName": "name-of-my-etl-job",
        "arguments": {"regionalCenters": "$.value"}
      }
    },
    "StartEtl": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:<redacted>",
      "Next": "WaitForForEtlCheck"
    },
    "WaitForForEtlCheck": {
      "Type": "Wait",
      "Seconds": 10,
      "Next": "GetEtlState"
    },
    "GetEtlState": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:<redacted>",
      "Next": "IsEtlFinished"
    },
    "IsEtlFinished": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.state",
          "StringEquals": "READY",
          "Next": "EtlDone"
        }
      ],
      "Default": "WaitForForEtlCheck"
    },
    "EtlDone": {
      "Type": "Pass",
      "End": true
    }
  }
}

1 Ответ

0 голосов
/ 30 апреля 2019

Я смог решить свою собственную проблему, изменив Result и добавив ResultPath, как:

{
  "StartAt": "InitStartEtl",
  "States": {
    "InitStartEtl": {
      "Type": "Pass",
      "Result": "name-of-my-etl-job",
      "ResultPath": "$.jobName",
      "Next": "StartEtl"
    },

Изменение результата позволило мне добавить строку в узел .jobName через ResultPath, добавив при этом ввод {"value": "LA"} к выходу

...