1

从已通过 CloudFormation Stack 部署的自动化 SSM 文档中,我触发了 Lambda 函数 CopyToMultipleAccountsLambdaFunction 和 CopyToMultipleRegionsLambdaFunction。这些接收到格式错误的有效负载,导致 lambda 函数失败。

确切的错误如下:

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

与我部署的管道中传递给 lambda 函数的所有其他有效负载的唯一区别是缺少参数 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."
},

您可以在此处此处找到两个 lambda 函数的代码

这两个 lambda 函数的触发器由 Automation SSM Document CopyAndShare 提供,您可以在此处找到

我在网上阅读了一个潜在的解决方案是将对象封装在 [ ] 构造中。我试过了,但它不起作用,并且 Lambda 引发的错误是未知的。

4

0 回答 0