3

我正在尝试在已经存在的 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 所以请求类型应该不是问题 任何人都可以帮忙吗?我快疯了 :(

4

1 回答 1

0

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

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

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

于 2020-12-25T14:25:58.853 回答