如何使用lambda @ edge调整图像大小时解决“访问被拒绝”错误

时间:2019-04-26 10:46:04

标签: amazon-web-services amazon-s3 aws-lambda http-status-code-403 aws-lambda-edge

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

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

我可以看到图像,但是每当尝试调整大小时,都会出现“访问被拒绝”错误。

S3存储桶是公共可读的。 在存储桶策略中,我为put对象和get对象使用了lambda函数正在使用的IAM角色。

我将各种lambda策略附加到IAM的功能角色上,如下所示:

AWSLambdaFullAccess,CloudFrontFullAccess,AdministratorAccess,AWSLambdaExecute,AWSLambdaBasicExecutionRole,AWSLambdaRole

分配查看协议策略HTTP和HTTPS,因此请求类型应该没有问题 有人可以帮忙吗?我快疯了:(

1 个答案:

答案 0 :(得分:0)

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

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

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