使用AWS S3。我有混合的视频和照片文件。所有这些都在各自的子目录中。所有文件都设置为私有。我尝试访问视频文件时收到AccessDenied
。其他文件都没问题。
我试过这个无济于事:
{
"Id": "Policy1331547131417",
"Statement": [
{
"Sid": "Stmt1331546963174",
"Action": [
"*"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/videos/*",
"Principal": {
"AWS": [
"*"
]
}
},
{
"Sid": "Stmt1331547083926",
"Action": [
"*"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/photos/*",
"Principal": {
"AWS": [
"*"
]
}
},
{
"Sid": "Stmt1331547130024",
"Action": [
"*"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/banners/*",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
我的广告系列政策与视频,照片和横幅相同。所有文件的ACL权限也相同。那么为什么我无法访问我的视频目录中的文件?
答案 0 :(得分:0)
您如何实际尝试访问您的视频文件,即通过哪种工具,服务,API?
使用中的访问方法实际上也可能需要s3:ListBucket
操作的权限,例如JavaScript视频播放器小部件可能会隐式查找相关视频的各种文件格式,以向用户显示相应的选择 - 您需要了解Operations on Buckets之间的区别(例如ListBucket)和Operations on Objects(例如GetObject),有关详细信息,请参阅我对Problems specifying a single bucket in a simple AWS user policy的回答。
相应地扩展视频存储分区策略可能会解决此问题,例如: (仅限政策片段):
{
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/videos",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
请注意,此政策片段会解决存储桶 ,其中仅解决其中的对象 和< strong>两个片段都是必需的 - 如上所述,我对Problems specifying a single bucket in a simple AWS user policy的回答解释了这种微妙的差异。
答案 1 :(得分:0)
除了斯特芬·欧宝的答案。
下面是为我工作的。
{
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::BUCKET_NAME/*",
"Principal": {
"AWS": [
"*"
]
}
}
]
}