CDK CustomResource 属性错误:供应商响应不包含对象中的密钥

use*_*227 5 amazon-web-services aws-cloudformation aws-lambda

使用 CDK,我有一个 aws 自定义资源,我想从其响应中获取值。不幸的是,我一直收到标题中的错误。下面是资源调用的 lambda响应的简化版本:

public class Response {

    private ResponseInfo info;

}
Run Code Online (Sandbox Code Playgroud)

使用此响应的 lambda 处理程序位于此处

我已经在 AWS Lambda 控制台中测试了 lambda 确实返回以下形式的 json:

{
    "info": {...}
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是当我尝试使用以下命令获取它(从触发 lambda 的自定义资源):

flyway_resource.get_response_field("info")
Run Code Online (Sandbox Code Playgroud)

我收到标题中的错误。我有什么想法吗?如何查看自定义资源的响应实际上是什么样子,以便我可以使用正确的键?

您可以在此处查看自定义资源定义

D.B*_*D.B 0

自定义资源返回的 json 对象没有“info”字段。我将使用 boto3 创建资源并在控制台中打印响应以查看其外观:

像这样的东西:

    client = boto3.client('Lambda', region_name='ap-southeast-2')
    response = client.invoke(
       FunctionName='string',
       InvocationType='Event'|'RequestResponse'|'DryRun',
       LogType='None'|'Tail',
       ClientContext='string',
       Payload=b'bytes'|file,
       Qualifier='string'
     )

     print(response) 
Run Code Online (Sandbox Code Playgroud)

您的自定义资源的响应似乎是这样的:

{ 'StatusCode': 123, 'FunctionError': 'string', 'LogResult': 'string', 'Payload': StreamingBody(), 'ExecutedVersion': 'string' }

但你可以通过 boto3 调用来验证它

boto3 文档:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html? highlight=lambda#Lambda.Client.invoke