如何在使用AWS SDK for Java调用AWS Lambda函数时检索context.done()消息?

我正在使用适用于Java的AWS开发工具包来调用以前上传的一些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.done()来取代context.succeed()。context.succeed(null,data);

在我描述的情况下,data.Payload将是从DynamoDB中检索的JSONstring。