1

我对 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 函数,因此它应该指向正确的函数,但它没有更新。如果我切换版本,查看器请求功能会正确更新。

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

4

2 回答 2

1

CloudFront 需要将版本化的 lambda 附加到其事件。

这意味着每次更新 Lambda@edge 代码时,都需要获取其最新的 lambda 并在 CloudFront 中进行更新。

有多种方法可以自动执行这些手动步骤,具体取决于您自动创建 AWS 资源的方式。(CloudFormation/CDK)。

于 2021-08-18T21:39:31.463 回答
0

当使用带有 lambda@edge 的 Origin 响应和 Origin 请求触发器时,云端会缓存响应。因此,这可能是服务于 chached 内容。您可以对设置 lambda@edge 的特定路径运行无效并再次检查。要了解有关失效的更多信息,请参阅此文档https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html

于 2018-09-19T05:43:25.687 回答