Из документа 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, неизвестна.