我正在使用AWS SDK for Java来调用之前上传的一些AWS Lambda函数。 invokeAsync方法返回一个invokeAsyncResult对象,它似乎只包含一组非常有限的属性和方法。特别是,对象中包含的唯一相关信息是HTTP状态代码(例如,202
表示成功)。似乎没有任何方法可用于检索提供给Lambda Node.js context.done()
方法的错误代码或消息。
因此,无法直接从Lambda函数调用中获取任何“返回值”。我必须让Lambda处理程序将一个对象放到S3来存储返回值的JSON表示,然后使用Java SDK代码在消费者端获取对象的内容。
有没有人知道如何直接从Lambda函数中获取一些有意义的“返回值”?
答案 0 :(得分:2)
在您的代码中,您可以查看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.done()替换context.succeed() context.succeed(null,data);
在我描述的情况下,data.Payload将是从DynamoDB检索的JSON字符串。