如何在使用 lambda@edge 调整图像大小时修复访问被拒绝错误

Posted

技术标签:

【中文标题】如何在使用 lambda@edge 调整图像大小时修复访问被拒绝错误【英文标题】:How to fix Access Denied error while resizing images with lambda@edge 【发布时间】:2019-09-15 20:55:06 【问题描述】:

我正在尝试在已经存在的 s3 存储桶及其分布上使用下面文章中的 Lambda@Edge 函数:

https://aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/

我可以访问图片,但每当我尝试调整大小时,我都会收到“拒绝访问”错误。

S3 存储桶是公开可读的。 在存储桶策略中,我为公共和正在使用的 IAM 角色 lambda 函数提供了 put object get object 权限。

我已将各种 lambda 策略附加到函数的 IAM 角色,如下所示:

AWSLambdaFullAccess、CloudFrontFullAccess、AdministratorAccess、AWSLambdaExecute、AWSLambdaBasicExecutionRole、AWSLambdaRole

Distributions 查看协议策略 HTTP 和 HTTPS,因此请求类型应该不是问题 任何人都可以帮忙吗?我要疯了:(

【问题讨论】:

【参考方案1】:

我关注了同一篇文章并遇到了同样的问题。对我来说,查询字符串没有被转发到原始响应函数。当没有找到查询字符串时,该函数仅返回原始响应(尽管我将存储桶公开为 403)。本文使用 Cloudfront 配置中的缓存策略设置来转发现在遗留的查询字符串。 (由于文章于 2018 年 2 月 20 日撰写)

您可以通过现在的旧缓存策略使用相同的配置配置查询字符串转发。最好使用新的origin request policy,它可以让您明确控制发送的参数。您可以使用 Managed-AllViewer 策略转发所有标头、cookie 和查询字符串,或创建自己的策略以满足您的需求。

问题发布已经很长时间了,但我希望它可以帮助因修改配置而面临问题的人。

【讨论】:

以上是关于如何在使用 lambda@edge 调整图像大小时修复访问被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

调整窗口大小时如何使用鼠标单击获取图像坐标?

如何在浏览器宽度调整大小但保持相同高度时自动调整图像大小?

我们如何防止当我调整窗口大小时,我的图像使用 HTML-CSS 移动?

如何在Java中裁剪调整大小的图像?

在窗口调整大小时使用 jquery 的全屏图像?

如何保存调整大小的图像?