问题标签 [aws-lambda-edge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5480 浏览

amazon-cloudfront - lambda@edge 没有被 cloudfront 触发

我正在使用 lambda@edge 通过云端重定向我的网站。

我已将我的版本化 lambda arn 附加到它拥有的所有 4 个事件的云前端缓存行为中。

当我点击我的云端端点时,它说

当我检查我的 lambda 日志/调用指标时,我根本看不到任何命中。

这可能是什么原因?

我尽我所能找到解决我的 lambda 没有被触发的问题??

0 投票
2 回答
1498 浏览

amazon-web-services - lambda@edge 日志和调用计数未显示?

我已经创建了云前端分布并将 lambda 附加到触发器

根据我的 lambda,当我点击端点时,它会重定向到我想要重定向的页面。

但我无法在任何地区看到我的 lambda 日志。

它也没有显示调用计数。

有人遇到过这个问题吗??

这是我的 lambda 代码

0 投票
2 回答
1272 浏览

amazon-web-services - Cloudfront 引用旧的 Lambda@Edge 版本

我对 AWS 还是很陌生,所以这可能是错误的,但我的 Cloudfront 发行版似乎指向了我的 Lambda@Edge 函数的旧版本。

我按照本教程进行了初始设置: https ://aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/

当我更新 Lambda 函数以完全满足我的需要时,它工作了数周,一直到 Origin Response 函数的第 16 版。但是,当我创建版本 17(将 .gif 格式化为 .png)时,出现了问题。我回滚到 16,但仍然收到 503 错误。从那以后,我创建了很多新版本,从一直回滚到创建新函数,我的 Origin Response 仍然抛出 503 错误。 https://d361pysytz4143.cloudfront.net/images/blackhat.png?d=200x200

我注意到我的 Cloudwatch for Origin Response 一直在引用版本 17,无论我删除日志堆栈和/或发布新的 Lambda 函数多少次。

00:50:51
开始请求 ID:6118af00-3d22-11e8-a163-5577c9775707 版本:17
开始请求 ID:6118af00-3d22-11e8-a163-5577c9775707 版本:17
00:50:51
2018-014-11TZ00.59 6118af00-3d22-11e8-a163-5577c9775707 类型错误:无法读取exports.handler.err (/var/task/index.js:19:51) 处未定义的属性“状态” 2018-04-11T00
:50:51.179Z 6118af00 -3d22-11e8-a163-5577c9775707 TypeError:无法读取exports.handler.err(/var/task/index.js:19:51)未定义的属性“状态”

我确保将 Cloudfront 附加到我最新的 Lambda 函数,因此它应该指向正确的函数,但它没有更新。如果我切换版本,查看器请求功能会正确更新。

发生了什么事,是否有任何缓存或我需要清除的东西?

0 投票
1 回答
137 浏览

amazon-web-services - AWS lambda@edge 调用计数未显示?

当 Cloudfront 中发生事件时,我正在使用 lambda@edge

我可以在距离 cloudfront 端点最近的区域看到 lambda@edge 的日志。

我看不到我的 lambda 被调用的次数(调用计数),我在哪里看到我的 lambda@edge 调用计数?

0 投票
1 回答
244 浏览

amazon-web-services - 如何从 lambda@edge 访问云端起源?

我已经在 Cloudfront 中使用 lambda@edge 完成了重定向。

如何在特定条件下从 lambda@edge 回击原点?

那可能吗 ??

0 投票
1 回答
840 浏览

amazon-web-services - 将标头从查看器请求传递到 AWS lambda@Edge 中的源请求

是否有可能将标头从查看器请求传递到原始请求,而不会将 AWS Lambda@Edge 中的 Vary 标头列入白名单。

0 投票
6 回答
21329 浏览

amazon-web-services - 无法将 cloudfront 作为触发器添加到 lambda 函数

嗨,我已按照此说明尝试使用 Cloudfront 和 lambda@edge 调整图像大小。当我尝试测试调整大小的图像时,我不断收到以下错误消息:

与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限。

于是我查看了开头提到的那篇文章提供的云形成创建的lambda函数,发现里面没有触发器。

在此处输入图像描述

我尝试手动设置,但收到以下错误消息:

CloudFront 事件不能与 $LATEST 或别名关联。选择操作以发布新版本的函数,然后重试关联。

我按照错误消息中的说明进行操作;发布,并将 Cloudfront 添加为触发器,但似乎无法应用它。它仍在运行没有 Cloudfront 作为触发器的那个。

如何将此版本应用为我的 lambda 服务?

有没有办法将 Cloudfront 设置为触发器并使其正常工作?

0 投票
1 回答
600 浏览

amazon-cloudfront - 在记录之前修改 CloudFront 请求?

我正在构建一个 ELK 堆栈(第一次)来跟踪 CloudFront 分配的最终用户 REST API 使用情况(在 S3 源之前)。用户将刷新令牌作为其请求的一部分传递,我希望使用此令牌来识别哪些用户正在发出哪个请求。不幸的是,CloudFront 访问日志似乎缺少一些标头信息(尤其是我的用例中的授权/接受)。这给我留下了三个问题:

  1. 有没有办法告诉 CloudFront 记录其他项目?看来答案是否定的。

  2. 作为一种替代策略,我尝试使用 lambda@edge (在查看器请求中)修改请求对象,以将标头信息移动到查询字符串中(以便它被记录),但 lambda@edge 中的任何操作似乎都没有反映在日志中。(尽管它反映在 Origin Request 函数中)。这应该可能吗?

如果做我想做的事是不可能的,我认为另一种方法是完全放弃 CloudFront 日志,只用每个用户请求触发一个 http 请求来 logstash,但我觉得这很容易超载。

谢谢

0 投票
1 回答
5066 浏览

url-rewriting - 用 lambda@edge 重写云端原始主机,如何?

我看到人们谈论如何根据各种信息重写 URI。但我想规范化正在请求的域名。这是我尝试过的:

我希望这会拉起请求,然后云端会针对我的规范化域提出请求。(对于示例和测试,我使用的是 slashdot,因为很明显这不是我的内容)。

最终,我试图在不进行重定向的情况下规范化请求,而是在命中命中源之前重写请求。

0 投票
1 回答
3551 浏览

amazon-web-services - AWS Lambda@edge。如何从 S3 读取 HTML 文件并将内容放入响应正文

具体来说,在原始响应触发函数(EX. With 404 Status)中,如何读取存储在 S3 中的 HTML 文件并将其内容用于响应正文?

(我想像 CloudFront 一样手动返回自定义错误页面,但根据 cookie 选择它)。

注意:S3 中的 HTML 文件存储在我网站的同一个存储桶中。启用 OAI。

非常感谢!