我正在使用AWS SDK for Java调用一些AWS Lambda之前已经上传的功能。 invokeAsync方法返回 invokeAsyncResult对象,它似乎只包含非常有限的一组属性和方法。特别是,对象中包含的唯一相关信息是 HTTP 状态代码(例如,202
表示成功)。似乎没有任何用于检索提供给 Lambda Node.js context.done()
方法的错误代码或消息的方法属性。
因此,无法直接从 Lambda 函数调用中获取任何“返回值”。我必须让 Lambda 处理程序将一个对象放入 S3 以存储返回值的 JSON 表示形式,然后使用 Java SDK 代码在消费者端获取该对象的内容。
有人知道如何直接从 Lambda 函数获取一些有意义的“返回值”吗?
最佳答案
在您的代码中,您可以查看 lambda 调用的结果:
lambda.invoke(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else {
console.log(data); // successful response
if (data.Payload != '{}') {
var jdata = JSON.parse(data.Payload);
console.log(jdata.something);
successCallback(jdata);
}
else successCallback(null);
}
});
在您的 Lambda 函数中,您可以使用如下内容:
dynamodb.getItem(params, function(err, data) {
if (err) {
console.log(err);
context.fail(err);
} else {
console.log(data);
context.succeed(data);
}
}
您还可以将 context.succeed() 替换为 context.done() context.succeed(null, 数据);
在我描述的情况下,data.Payload 将是从 DynamoDB 检索的 JSON 字符串。
关于node.js - 使用适用于 Java 的 AWS 开发工具包调用 AWS Lambda 函数时如何检索 context.done() 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490958/