【问题标题】:Where is the AWS Lambda callback API documented?AWS Lambda 回调 API 记录在哪里?
【发布时间】:2018-01-09 09:57:14
【问题描述】:

我正在寻找 AWS Lambda 的 NodeJS 处理函数的完整文档,尤其是结果对象。 如何设置标头、cookie...我还有哪些其他选项等?

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

AWS 文档真是一团糟……

【问题讨论】:

  • 您的问题似乎是关于 API Gateway 对 Lambda 回调参数的解释。从 Lambda 的角度来看,正确的答案是“任何与 JSON.stringify 兼容的对象。”
  • 确实,我正在使用 API 网关。那么如何将 lambda 响应转换为纯 HTTP 响应呢?
  • 这就是@SteveE。试图说明,下面。 API Gateway 有“集成响应”和“方法响应”的概念,它们会让你想拔掉所有的头发,直到你突然明白,你开始弄清楚他们在想什么,然后它开始变得有意义。大多数行为不是来自特定的回调结构,而是由您从回调对象内容中提取的元素构造,以构建所需的响应。要么,要么我做错了。我同意,这部分文档很模糊。我看看能不能确定点什么。
  • 本指南中有更多信息:docs.aws.amazon.com/apigateway/latest/developerguide/… 这仍然不是参考,但也许 AWS 无论如何都没有...

标签: javascript aws-lambda


【解决方案1】:

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 Gateway 控制台中,转到 GET Method 页面并选择 Method Response。展开默认的 200 HTTP 状态,然后选择 Add Header。添加一个名为“Set-Cookie”的新标头。

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

integration.response.body.Cookie

确保通过选择复选图标来保存标题!

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

【讨论】:

  • 感谢您的回答,但这是题外话。实际上,您可能只返回一个“Set-Cookie”标头,它要简单得多(请参阅stackoverflow.com/questions/45111150/…)。
  • 我需要一份全面的回调 API 文档(或者这可能记录在 API Gateway 中,但我也做不到)。我对教程、指南或博客文章不感兴趣。
猜你喜欢
  • 1970-01-01
  • 2020-04-10
  • 2020-12-10
  • 2011-04-15
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 2010-10-11
相关资源
最近更新 更多