Как передать вложенные объекты JSON в лямбда-функции из CloudFormation? - PullRequest
1 голос
/ 22 марта 2019

Из документа SSM автоматизации, который был развернут через стек CloudFormation, я запускаю лямбда-функции CopyToMultipleAccountsLambdaFunction и CopyToMultipleRegionsLambdaFunction.Они получают искаженную полезную нагрузку, что приводит к сбою лямбда-функций.

Точная ошибка выглядит следующим образом:

Could not parse request body into json: Unexpected character ('9' (code 57)): was expecting comma to separate Array entries at [Source: (byte[])"{"MetadataJSON":["{"MyAccountNo":"eu-central-1,eu-west-1,eu-west-2"}"],"AmiIDParamName":"/GoldenAMI/OperatingSystemName-OperatingSystemVersion/ProductName-ProductVersion/1", "MetadataParamName":"/GoldenAMI/OperatingSystemName-OperatingSystemVersion/ProductName-ProductVersion/1/temp"}"; line: 1, column: 22] (Service: AWSLambda; Status Code: 400; Error Code: InvalidRequestContentException

Единственное отличие от всех других полезных нагрузок, передаваемых лямбда-функциям в развернутом конвейере, заключается в том, что отсутствует параметр MetadataJSON.Этот параметр имеет значение, являющееся объектом типа JSON.(Я говорю вроде как «ключ»: «значение» кажется странным…)

На основании AWS Golden Image Pipeline Guide значение, которое я передаю (исключительно для целей тестирования), равно

"MetadataJSON":{
  "Type":"String",
  "Default":"{\"MyAccountNumber\":\"eu-central-1,eu-west-1,eu-west-2\"}",
  "Description": "Metadata of accounts and regions for distributing the golden AMI."
},

Вы можете найти код для двух лямбда-функций здесь и здесь

Триггер для этих двух лямбда-функцийпредоставленный Automation SSM Document CopyAndShare, который вы можете найти здесь

Я читал в Интернете одно из возможных решений - заключить объект в конструкцию [].Я попробовал, но это не работает, и ошибка, которую выдает Lambda, неизвестна.

...