{状态:202}从代码运行Lambda时

时间:2018-10-26 20:14:23

标签: javascript aws-lambda

这是我的Java代码:

    var params = {
        FunctionName: "theTable",
        InvokeArgs: JSON.stringify({ "name": "KirklandWA" })
    };
    lambda.invokeAsync(params, function (err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else {
            console.log(data);
        }
    });

这是在Lambda中:

exports.handler = async (event, context) => {
    return "theReturnedValue";
};

发生的事情是它没有返回theReturnedValue,而是返回了

  

{状态:202}   状态:202

Lambda中的代码正在被调用,我在Cloudwatch处已确定它。

3 个答案:

答案 0 :(得分:2)

您正在使用invokeAsync进行调用,该操作将仅返回文档中所述的状态代码。将invokeInvocationType: "RequestResponse"一起使用

参考: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property

var lambda = new AWS.Lambda({});
var params = {
  FunctionName: "function_name", 
  InvocationType: "RequestResponse"
};
response = lambda.invoke(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

答案 1 :(得分:0)

验证您的lambda是否已选择为NodeJs 8.10运行时,一旦验证,您必须直接返回promise:

exports.handler = async (event, context) => {
    return await new Promise((resolve, reject) => {
        resolve({ message: "hello world" });
    });
};

我在aws-sdk documentation中查看invokeAsync方法定义,并且状态码很好:

  

回调参数:

     
      
  1. err(错误)—从请求返回的错误对象。如果请求成功,则设置为null。
  2.   
  3. data(对象)—从请求返回的反序列化数据。如果发生请求错误,则设置为null。数据对象具有   以下属性:      
        
    • 状态-(整数)成功后将为 202
    •   
  4.   

我为您准备了一个基本示例,请查看 handler.js 文件:

https://github.com/ns4lin4s/stackoverflow

别忘了,您必须指定响应正文:

enter image description here

所以,当您完成操作后,请让我知道它的工作原理!

答案 2 :(得分:0)

问题是您的lambda function没有返回任何内容给呼叫者。

您的句柄功能具有第三个参数,它是一个回调函数,用于将结果返回给调用者。

callback函数接受两个值,分别是Error和结果

callback(Error error, Object result);

如果提供Error值,lambda将抛出您提供给用户的错误,如果不提供Error值但返回结果,则将返回结果

所有记录都很好here

这是基本示例

callback();     // Indicates success but no information returned to the caller.
callback(null); // Indicates success but no information returned to the caller.
callback(null, "success");  // Indicates success with information returned to the caller.
callback(error);    //  Indicates error with error information returned to the caller.

您的处理程序函数应该是。

exports.handler = async (event, context,callback) => {
     callback(null, "theReturnedValue");
};