如何在使用 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 调整图像大小时修复访问被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章