1

我有一个像这样的 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 服务之一)引用,因此作业给出了这样的错误“您没有读取所需的权限来自指定存储桶的指定对象”。请注意,如果我删除该策略,一切正常。所以我的问题是,我应该将弹性转码器引用为什么?我尝试了几种组合并到处搜索,但都是徒劳的。如果您认为有更好的方法,请告诉我。

  • 更新:

还有一种方法可以通过存储桶策略过滤一些被拒绝的请求,例如在上述情况下,我可以允许不是来自上述域但具有特定 IP 地址的请求。从这里的亚马逊文档中,我看到他们首先检查明确拒绝,然后不检查那些拒绝请求有没有办法解决这个问题?任何形式的帮助将不胜感激。谢谢你的时间

4

1 回答 1

1

与其创建允许 Amazon Elastic Transcoder 访问的存储桶策略,不如通过 Transcoder 服务使用的服务角色授予权限

只要服务角色有权访问您在 S3 中的文件,就不需要通过存储桶策略授予它。(尽管我不确定如果您DENY在存储桶策略中有活动会发生什么。)

请参阅:Elastic Transcoder 管道的服务角色

于 2015-11-19T11:03:41.330 回答