2

我正在使用适用于 Java 的 AWS 开发工具包来调用之前上传的一些AWS Lambda函数。invokeAsync方法返回一个invokeAsyncResult对象,该对象似乎只包含非常有限的一组属性和方法。特别是,对象中包含的唯一相关信息是 HTTP 状态代码(例如,202成功)。似乎没有用于检索错误代码或提供给 Lambda Node.jscontext.done()方法的消息的方法的任何属性。

因此,无法从 Lambda 函数调用中直接获取任何“返回值”。我必须让 Lambda 处理程序将一个对象放入 S3 以存储返回值的 JSON 表示,然后使用 Java SDK 代码在消费者端获取对象的内容。

有人知道从 Lambda 函数中直接获取一些有意义的“返回值”的方法吗?

4

1 回答 1

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.succeed() 替换为 context.done() context.succeed(null, data);

在我描述的情况下,data.Payload 将是从 DynamoDB 检索的 JSON 字符串。

于 2015-06-22T23:36:44.737 回答