2017-08-02 106 views
0

我正在寻找适用于NodeJS的AWS Lambda处理函数的完整文档,尤其是结果对象。 如何设置标题,饼干...我还有其他什么选项等等?AWS Lambda回调API在哪里记录?

只有回调原型似乎被记录下来,而不是它的参数。 http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html#nodejs-prog-model-handler-callback

AWS文档这么乱...

+1

你的问题似乎是关于API网关对Lambda回调参数的解释。从Lambda的角度来看,正确的答案是“与JSON.stringify兼容的任何对象”。 –

+0

的确,我正在使用API​​网关。那么如何将lambda响应转换为纯HTTP响应呢? – vcarel

+2

这就是@SteveE。下面试图说明。 API网关具有“集成响应”和“方法响应”的概念,使您能够将所有头发拉出来,直到它开始出现,然后开始弄清楚他们在想什么,然后才开始有意义。大部分行为并不是来自特定的回调结构,而是从您从回调对象内容中获取的元素构建的,以构建所需的响应。要么,要么我做错了。我同意,这部分文档很模糊。我会看看我能否确定一些事情。 –

回答

0

This blog post解释它:

示例代码是这样的:

'use strict'; 
exports.handler = function(event, context) { 
    console.log("{'Cookie':event['Cookie']}"); 
    var date = new Date(); 

    // Get Unix milliseconds at current time plus 365 days 
    date.setTime(+ date + (365 \* 86400000)); //24 \* 60 \* 60 \* 100 

    // Generate a random cookie string 
    var cookieVal = Math.random().toString(36).substring(7); 

    var cookieString = "myCookie="+cookieVal+"; domain=my.domain; 
     expires="+date.toGMTString()+";"; 

    context.done(null, {"Cookie": cookieString}); 

}; 

如果使用回调,那么该响应需要是沿线:

callback(null, { 
    "statusCode": 200, 
    "headers": { "Set-Cookie": myCookie=cookieVal; domain=my.domain; 
     expires="+date.toGMTString()+"; }, 
    "body": "..." 
}); 

但你也需要更新APIG允许Cookie响应按照博客文章:

API网关控制台,转到GET方法页,选择方法响应。展开默认的200 HTTP状态,并选择添加标题。添加名为“Set-Cookie”的新标头。

在GET方法页面上,选择集成响应。在默认的200 HTTP状态的标题 映射部分下,选择铅笔 图标编辑“Set-Cookie”标题。在映射值部分, 地说:

integration.response.body.Cookie

确保通过选择检查图标,保存标题!

APIG当前有一个限制,即每个标题只能在响应中存在一次。这意味着一次只能设置一个cookie。

+0

感谢您的答案,但这是脱离主题。实际上,你可能会返回一个“Set-Cookie”头文件,它非常简单(参见https://stackoverflow.com/questions/45111150/setting-cookie-in-http-response-header-from-aws- λ-节点-JS)。 – vcarel

+0

我需要回调API的全面文档(或者这可能在API网关中有记录,但我不能在那里)。我对教程,指南和博客文章不感兴趣。 – vcarel