如何解决CloudFront原始响应返回状态:“ 403”
我已将CloudFront设置为具有S3源,以提供来自S3的图像。现在添加Lamnda @ Edge进行图像转换。该代码基于status
代码(200
或404
)
但是针对起源响应的Cloudfront事件始终具有status: '403'
以下是示例响应(来自event.Records[0].cf
)
{
config: {
distributionDomainName: 'xxxx.cloudfront.net',distributionId: 'xxxxx',eventType: 'origin-response',requestId: 'YVAViQDNbJcmgRlZFEWjxS2xF5balXwR-Kkv8PN4jXRO4hEPksOaJg=='
},request: {
clientIp: '81.403.0.141',headers: {
referer: [Array],'x-forwarded-for': [Array],'user-agent': [Array],via: [Array],pragma: [Array],'accept-encoding': [Array],host: [Array],'cache-control': [Array]
},method: 'GET',origin: {
s3: [Object]
},querystring: '',uri: '/images/product/photo/photocell_white.webp'
},response: {
headers: {
'x-amz-request-id': [Array],'x-amz-id-2': [Array],date: [Array],server: [Array],'content-type': [Array],'transfer-encoding': [Array]
},status: '403',statusDescription: 'Forbidden'
}
}
我有S3存储桶是可公开写的(我知道它很危险,但是只是为了使它工作)。
{
"Version": "2012-10-17","Statement": [
{
"Sid": "PublicAccess","Effect": "Allow","Principal": "*","Action": "s3:*","Resource": "arn:aws:s3:::stage.domain.com/*"
}
]
}
在CloudFront中
Origin Domain Name : stage.domain.com.s3.amazonaws.com
Origin Path : /assets
Origin ID : S3-stage.domain.com
这是怎么了
Lambda函数:https://pastebin.com/raw/FNd59Tvn
解决方法
S3 按设计返回 403。当访问用户没有s3:ListBucket的权限时s3返回403。
您可以了解更多here
您需要将此声明添加到您的政策中:
target date positive negative neutral etc
0 Samsung 20200101 242 28 69 98
1 Samsung 20200102 270 45 33 143
2 Samsung 20200103 252 57 90 113
3 Samsung 20200104 292 74 134 229
警告
确保您了解让公众能够列出您的 s3 存储桶中的所有对象的后果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。