使用 CDK,我有一个 aws 自定义资源,我想从其响应中获取值。不幸的是,我一直收到标题中的错误。 the response 的简化版本资源调用的 lambda 的如下所示:
public class Response {
private ResponseInfo info;
}
使用此响应的 lambda 处理程序是 here
我在 AWS Lambda 控制台中测试了 lambda 确实返回以下形式的 json:
{
"info": {...}
}
但是当我尝试使用以下方式获取它(从触发 lambda 的自定义资源)时:
flyway_resource.get_response_field("info")
我收到标题中的错误。我有什么想法吗?如何查看自定义资源的响应实际上是什么样子,以便我可以使用正确的键?
您可以查看自定义资源定义here
最佳答案
自定义资源返回的 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)
您的自定义资源的响应似乎是这样的:
{ “状态代码”:123, '函数错误':'字符串', '日志结果': '字符串', “有效负载”:StreamingBody(), '执行版本': '字符串' }
但您可以通过 boto3 调用来验证它
关于amazon-web-services - CDK CustomResource属性错误: Vendor response doesn't contain key in object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71680494/