Есть ли конфликт между политиками корзины и подписанными URL-адресами?

Некоторые файлы в моей корзине настроены на общедоступное чтение (ACL). Итак, я где-то читал, что установка политики корзины может автоматически сделать все файлы в корзине закрытыми.

bucketname — это заполнитель для фактического имени корзины. Моя политика корзины такова:

{
    "Version": "2008-10-17",
    "Id": "Policy1331182170360",
    "Statement": [
        {
            "Sid": "Stmt1331182162671",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucketname/*"
        }
    ]
}

В одном из моих контроллеров, У меня:

    s3 = Aws::S3.new(APP_CONFIG['amazon_access_key_id'], APP_CONFIG['amazon_secret_access_key'])
    bucket_gen = Aws::S3Generator::Bucket.create(s3, APP_CONFIG['amazon_bucket_name'])
    signed_url = bucket_gen.get("#{URI.unescape(URI.parse(URI.escape(@song.encoded_file_url)).path[1..-1])}", 10.minute) 
    redirect_to signed_url and return

Меня перенаправляют, но мне постоянно отказывают в доступе. Однако, если я удаляю политику корзины, я перенаправляюсь на подписанный URL, и все работает нормально.

Изначально я думал, что там был ап проблема с тем, как я подписываю свои URL-адреса. Поэтому я открыл веб-консоль Amazon и вручную установил права доступа к файлам как частные. Для этого теста я удалил политику корзины. Перешел к URL-адресу файла (не подписанному) и не смог получить доступ. Это нормально. Во втором тесте я подписал URL-адрес и смог получить доступ к файлу. Что означает, что нет ничего плохого в том, как я подписывался.

Есть ли конфликт между политиками корзины и подписанными URL-адресами?

5
задан shingara 8 March 2012 в 08:44
поделиться