Я столкнулся с проблемой при попытке получить доступ к атрибутам входных данных json, которые передаются в мою задачу запуска ECS в моей пошаговой функции. Входные данные json имеют следующую структуру.
Я пытаюсь передать некоторые атрибуты в качестве параметров командной строки, а некоторые установить в качестве переменных среды. Ниже приведена конфигурация задачи ECS в моей пошаговой функции.
Когда я запускаю задачу ECS, значения передаются как строка, например: «$.lambdaResult.body.productId», а не фактическое значение в json. Я попытался настроить значения переменных среды как «Value.$»: «$.lambdaResult.body.totalPrice». Но затем при развертывании пошаговой функции выдается следующая ошибка.
«Неверное определение конечного автомата: 'SCHEMA_VALIDATION_FAILED: значение поля 'Value.$' должно быть допустимым JSONPath или действительным вызовом встроенной функции в /States/RunCreateOrderECSTask/Parameters'
Каков правильный способ передачи значений json в качестве аргументов командной строки и установки их в качестве переменных среды? Я использую загрузочный контейнер Spring, поэтому все, что находится в команде [], передается приложению в качестве параметров.
Я вижу пару проблем с вашим определением рабочего процесса.
Во-первых, вы не добавили суффикс .$
к ключам там, где предоставляете 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)"