Функция шага AWS: как передать пару значений статического ключа в конечный автомат (без использования type: pass)? - PullRequest
1 голос
/ 10 июня 2019

У нас есть общая лямбда-функция, которую мы пытаемся выполнить шаговой функцией. Общая лямбда-функция ищет 2 значения: clusterId и policyJsonName.

Мы можем получить clusterId с более раннего конечного автомата, но теперь мы хотели бы жестко кодировать policyJsonName внутри конечного автомата. Итак, мы попытались использовать опцию Input и Parameter для пошаговой функции, но это не работает и дает нам ошибку проверки.

https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html

{
    "Comment": "Job Orchestration EMR Step",
    "dataset1": {"policyJsonName": "lambdainput"},
    "StartAt": "EMRFetchClusterId",
    "States": {
      "EMRFetchClusterId": {
        "Type": "Task",
        "Resource": "arn:aws:lambda:us-east-1:XXXXXX-fetch-clusterId",
        "ResultPath": "$.clusterId",
        "Next": "EMRAutoScaling"
      },
      "EMRAutoScaling": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:XXXX-add-auto-scaling",
      "Parameters": {
      "comment": "Provide input to autoscaling in lambda function",
      "InputPath": "$.dataset1",
    }
}

1 Ответ

1 голос
/ 11 июня 2019

В указанной вами ссылке эта часть:

{
  "comment": "Example for InputPath.",
  "dataset1": {
    "val1": 1,
    "val2": 2,
    "val3": 3
  },
  "dataset2": {
    "val1": "a",
    "val2": "b",
    "val3": "c"
  }
}

На самом деле это вход в состояние , он не является частью определения состояния.Вы можете подтвердить это, потому что они говорят следующее:

Например, предположим, что вход в ваше состояние включает следующее:

Вместо этого, если вы хотите жестко закодировать значения,Вы должны передать его непосредственно в параметр Parameters, например:

"Parameters": {
  "policyJsonName": "lambdainput"
}
...