【发布时间】:2019-08-30 13:59:36
【问题描述】:
我已经设置了以下信息:
- 创建了一个 AWS S3 存储桶并将一些图像上传到特定文件夹中
- 创建了 AWS CloudFront Web 分配:
- 源域名:从列表中选择的 S3 存储桶
- 限制存储桶访问:是
- 源访问身份:选定的现有身份
- 授予对存储桶的读取权限:是,更新存储桶政策
AccessDenied拒绝访问
我已经从上面的过程中得到了签名的 URL,比如
image.png?policy=xxxxx@signature=xxx@Key-Pair-Id=XXXXXXX
但我无法访问网址
云端策略的 JSON 示例
{
"Statement": [{
"Resource": "XXXXXXXXXX.cloudfront.net/standard/f7cecd92-5314-4263-9147-7cca3041e69d.png",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": 1555021200
},
"IpAddress": {
"AWS:SourceIp": "0.0.0.0/0"
},
"DateGreaterThan": {
"AWS:EpochTime": 1554848400
}
}
}]
}
添加了 CloudFront 存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXXXXX"
},
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::bucket_name/*"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXXXXX"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket_name"
}
]
}
【问题讨论】:
-
您是否检查了私钥文件是否已正确转换以创建签名策略 URL?
-
请显示完整的错误。
-
@r123 会检查
-
该错误看起来可能来自 S3。检查您的 S3 存储桶策略以确保没有任何明确拒绝,应用了 OAI 策略,并可选择在存储桶 arn 上添加
listBucket,例如arn:aws:s3:::bucket_name。如果您只有一个桶的 getObject 权限并尝试获取不存在的对象,您将得到 403,但如果您有 listBucket 权限,您将得到 404。 -
@cementblocks In bucket policy 有权访问 ListBucket、GetObject 和 PutObject
标签: amazon-web-services amazon-s3 amazon-cloudfront