Использование входных данных json для конфигурации контейнера ECS в пошаговых функциях AWS

Я столкнулся с проблемой при попытке получить доступ к атрибутам входных данных json, которые передаются в мою задачу запуска ECS в моей пошаговой функции. Входные данные json имеют следующую структуру.

Я пытаюсь передать некоторые атрибуты в качестве параметров командной строки, а некоторые установить в качестве переменных среды. Ниже приведена конфигурация задачи ECS в моей пошаговой функции.

Когда я запускаю задачу ECS, значения передаются как строка, например: «$.lambdaResult.body.productId», а не фактическое значение в json. Я попытался настроить значения переменных среды как «Value.$»: «$.lambdaResult.body.totalPrice». Но затем при развертывании пошаговой функции выдается следующая ошибка.

«Неверное определение конечного автомата: 'SCHEMA_VALIDATION_FAILED: значение поля 'Value.$' должно быть допустимым JSONPath или действительным вызовом встроенной функции в /States/RunCreateOrderECSTask/Parameters'

Каков правильный способ передачи значений json в качестве аргументов командной строки и установки их в качестве переменных среды? Я использую загрузочный контейнер Spring, поэтому все, что находится в команде [], передается приложению в качестве параметров.


129
1

Ответ:

Решено

Я вижу пару проблем с вашим определением рабочего процесса.

Во-первых, вы не добавили суффикс .$ к ключам там, где предоставляете JSONPath.

{
  "Name": "UNIT_PRICE",
  "Value": "$.lambdaResult.body.unitPrice"
}

должно быть

{
  "Name": "UNIT_PRICE",
  "Value.$": "$.lambdaResult.body.unitPrice"
}

Во-вторых, когда вы хотите предоставить массив, вам нужно использовать внутреннюю функцию States.Array . Например:

"Command.$": "States.Array($.lambdaResult.body.productId,$.lambdaResult.body.productDescription,$.lambdaResult.body.productType)"