我有一个像这样的s3存储桶策略,如果
下没有列出引用,则会拒绝请求{
"Sid": "6",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket_name/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://example1.com/*",
"http://example2.com/*",
"https://*amazon.com*/*"
]
}
}
}
注意我试过https://*amazon.com*/*, https://*aws.amazon.com* ,https://*amazon.com*,http://*amazon.com*
我的问题是,当它试图获取对象时,我无法获得弹性trasncoders(aws服务之一)referer,因此作业会出现类似这样的错误“您没有读取所需的权限来自指定存储桶的指定对象“。请注意,如果删除该策略,一切正常。所以我的问题是我应该把弹性代码转换器作为什么?我尝试了几种组合并在这里和那里搜索但都是徒劳的。如果你认为有更好的方法,请告诉我。
还有一种方法,我可以通过存储桶策略过滤一些被拒绝的请求,例如在上面的情况下,我可以允许不是来自上述域但具有特定IP地址的请求。从亚马逊文档here我看到他们首先检查显式否认然后那些拒绝请求没有被检查是否有办法解决这个问题? 任何形式的帮助将受到高度赞赏。谢谢你的时间
答案 0 :(得分:1)
不是创建允许访问Amazon Elastic Transcoder的Bucket Policy,而是通过Transcoder服务使用的服务角色授予权限。
只要服务角色具有在S3中访问文件的权限,就不需要通过Bucket Policy授予它。 (虽然我不确定如果您在存储桶策略中有一个活跃的DENY
会发生什么。)