【问题标题】:Get aws lambda response as an HTML page将 aws lambda 响应作为 HTML 页面获取
【发布时间】:2017-08-25 04:10:56
【问题描述】:

如何将 aws lambda 响应作为 HTML 页面。请提供解决此问题的分步程序。

【问题讨论】:

  • 我刚刚将 HTML 代码作为字符串插入,它返回正确的输出,但是在 html 代码之外显示了一个双引号
  • 我有同样的问题,我尝试创建一个返回 HTML 内容的 Lambda 函数,然后通过 AWS API Gateway 调用它以返回网站标记。我还在为破坏内容的 HTML 内容周围的双引号而苦苦挣扎。您是否设法解决了您的问题?
  • 这很简单。只需在 API 网关的集成响应设置中添加一个输出映射模板。
  • 首先,您只需将 HTML 标记存储在 lambda 函数的变量中。然后在 Lambda 执行后返回。这是映射模板#set($inputRoot = $input.path('$')) $inputRoot.variableHTML 的示例。这里variableHTML 包含HTML 标记。在您需要为http 状态创建响应模型之后,通过方法响应。这里添加响应模型Content-Typetext/html。然后你会得到不带引号的 HTML 页面。

标签: html amazon-web-services response aws-lambda


【解决方案1】:

HTML 标记存储在变量中并返回它以避免文本被引号括起来。首先将您的 HTML 标记存储在 lambda 函数的变量中,然后将其返回。例如在 Node.js 中:

context.succeed({ variableHTML: myContentHtml })

这是一个映射模板的例子:

#set($inputRoot = $input.path('$')) $inputRoot.variableHTML .

这里的variableHTML 包含从 lambda 函数传递的 HTML 标记。之后,您需要为 HTTP 状态创建一个响应模型,该模型可通过方法响应访问。这里将 Response 模型 Content-Type 设置为 text/html。然后您将获得不带引号的 HTML 页面,并且浏览器将其识别为 HTML。

【讨论】:

  • 您实际上将代码放在哪里?我在 API Gateway 仪表板中四处寻找,但不确定您在哪里进行所有这些操作
  • Nm,找到了。在您的 API 中,单击左侧资源窗格中的资源(GET、POST 等),然后单击工作流中的“集成响应”,然后单击 200 响应旁边的小下拉箭头,然后下拉“映射模板”并添加内容类型('text/html')。然后点击“Output Passthrough”旁边的铅笔来创建映射。
  • 别忘了点击蓝色按钮并部署 API!
  • 后续的另一个好答案:stackoverflow.com/questions/33614198/…
  • 这里有一个很好的教程:kennbrodhagen.net/2016/01/31/…
【解决方案2】:

您不需要 Lambda 来打印 HTML。

添加 HTML 代码:

  • 转到您的 GET 方法 -> 集成响应 -> 身体映射模板

  • 删除应用程序/json(默认)

  • 添加文本/html 映射

  • 在右侧的空白字段中,只需粘贴您的 HTML(删除其他任何内容)

您还需要更新方法响应中的内容类型:

  • 展开 200 响应

  • 在 200 的响应正文下,删除 application/json 并添加带有空模型的 text/html

然后只需部署您的 API 即可。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多