AWS: Передача значения параметров задания в клей для задания шага - PullRequest
0 голосов
/ 01 мая 2020

Я создал 3 задания Glue, которые имеют один из ключей / значений параметров задания, например: runid id

Если я выполняю задание Glue с использованием AWS CLI следующим образом, он работает нормально: aws glue start-job-run --jobname $ job --arguments = '- runid = "Runid_10"'

Эти 3 задания Glue находятся внутри одной функции шага и конечного автомата. Определение:

{
  "Comment":"Sample Step Function",
  "StartAt":"First Glue Job",
  "States": {
      "First Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Firstjob"
      },
      "Next": "Second Glue Job"
    },
    "Second Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Secondjob"
      },
      "Next": "Third Glue Job"
    },
    "Third Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Thirdjob"
      },
      "End": true
    }
  }
}

Если я пытаюсь выполнить этот конечный автомат с параметром Input, значение этого параметра не передается Gluejob. Нужно ли изменить определение задания конечного автомата, чтобы передать значение входного параметра в задание Glue, которое прошло как часть запуска конечного автомата. Пожалуйста, объясните мне, как это сделать.

aws пошаговые функции start-execute --state-machine-arn arn: aws: состояния: us-east-1: 123456789012: stateMachine: HelloWorld --input "{runid": "Runid_10"}

Конечный автомат успешно выполняется, но значение Runid не передается параметрам Gluejob.

Пожалуйста, дайте мне знать, как передать значение параметров задания Glue, которое находится внутри Определение конечного автомата.


Я использую параметр Arguments следующим образом:

{
  "Comment":"Sample Step Function",
  "StartAt":"First Glue Job",
  "States": {
      "First Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Firstjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
      "ResultPath" : "$.runid",
      "Next": "Second Glue Job"
    },
    "Second Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Secondjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
      "ResultPath" : "$.runid",
      "Next": "Third Glue Job"
    },
    "Third Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Thirdjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
      "ResultPath" : "$.runid",
      "End": true
    }
  }
}

Передача ввода JSON {"--runid": "runid_10"} в Input-факультативном окно во время выполнения конечного автомата "start execute".

Обратите внимание: runid_n, где n - целое число и изменится.

Я добавлю значение runid_10 к выходному файлу в задании Glue и выведу файл похож на GlueJob-Firstjob_output_runid_10.csv

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Вам необходимо добавить его в атрибут Arguments в атрибуте Parameters, чтобы он выглядел следующим образом:

"Parameters" : {
           "JobName": "GlueJob-Firstjob",
           "Arguments": {
                  "--run_id":"$.runid"
                }

}

Для справки вы можете проверить. Раздел поддерживаемых параметров: здесь .

ОБНОВЛЕНИЕ: Вам необходимо добавить ResultPath в определениях задач, например:

"First Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Firstjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
       "ResultPath": "$.output"
}
0 голосов
/ 01 мая 2020

Входное значение 'runid' передается в качестве события в функцию Lambda внутри вашей Шаговой функции. Чтобы передать его из одной лямбда-функции в другую, вы можете просто вернуть событие, которое передаст данные от начала до конечного значения sh. Это событие содержит ваш аргумент runid.

Взгляните здесь .

...