Проблема с разрешением Amazon S3 - Как установить разрешения для всех файлов одновременно? - PullRequest
75 голосов
/ 14 сентября 2011

Я загрузил некоторые файлы с помощью консоли управления Amazon AWS.

Я получил ошибку HTTP 403 Access denied. Я обнаружил, что мне нужно установить разрешение на view.

Как бы я это сделал для всех файлов в корзине?

Я знаю, что можно установить разрешение для каждого файла, но это занимает много времени, когда имеется много файлов, которые должны быть доступны для просмотра всем.

Ответы [ 10 ]

115 голосов
/ 15 сентября 2011

Я предлагаю вам применить политику сегмента 1 к области, в которой вы хотите хранить общедоступный контент. Таким образом, вам не нужно устанавливать ACL для каждого объекта. Вот пример политики, которая сделает все файлы в корзине mybucket общедоступными.

{
    "Version": "2008-10-17",
    "Id": "http better policy",
    "Statement": [
        {
            "Sid": "readonly policy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
        }
    ]
}

То, что * в "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*" допускает рекурсию.


1 Обратите внимание, что политика Bucket отличается от политики IAM. (Например, вы получите сообщение об ошибке, если попытаетесь включить Principal в политику IAM.) Чтобы изменить политику корзины, перейдите в корневой каталог корзины в веб-консоли AWS и разверните Свойства> Разрешения. Подкаталоги корзины также имеют Свойства> Разрешения, но нет опции для Изменить политику корзины

5 голосов
/ 18 апреля 2017

Вы можете выбрать, какой каталог вы хотите, чтобы он был общедоступным.

Нажмите на «еще» и отметьте его как общедоступный; это сделает каталог и все файлы общедоступными.

4 голосов
/ 15 сентября 2011

Вы можете изменять ACL только для уникального предмета (ведра или предмета), поэтому вам придется менять их один за другим.

Некоторые приложения управления S3 позволяют применять один и тот же ACL ко всем элементам в корзине, но внутренне он применяет ACL к каждому по одному.

Если вы загружаете свои файлы программно,важно указать ACL при загрузке файла, чтобы вам не приходилось изменять его позже.Проблема использования приложения управления S3 (например, Cloudberry, Transmit, ...) заключается в том, что большинство из них использует ACL по умолчанию (только для частного чтения) при загрузке каждого файла.

4 голосов
/ 14 сентября 2011

Я использовал Cloudberry Explorer , чтобы сделать работу:)

2 голосов
/ 04 марта 2015

У меня была такая же проблема при загрузке файлов через программу (java) в корзину s3.

Ошибка: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Origin 'http://localhost:9000' поэтому доступ запрещен.В ответе был HTTP-код состояния 403

Я добавил идентификатор источника и изменил политику корзины и CORS конфигурацию , после чего все заработалохорошо.

1 голос
/ 17 апреля 2019

Вы можете установить ACL для каждого файла, используя aws cli:

BUCKET_NAME=example
BUCKET_DIR=media
NEW_ACL=public-read

aws s3 ls $BUCKET_NAME/$BUCKET_DIR/ | \
awk '{$1=$2=$3=""; print $0}' | \
xargs -t -I _ \
aws s3api put-object-acl --acl $NEW_ACL --bucket $BUCKET_NAME --key "$BUCKET_DIR/_"
1 голос
/ 13 мая 2018

Чтобы сделать большую часть файлов общедоступной, выполните следующие действия:

  1. Перейдите на Веб-интерфейс S3
  2. Откройте нужное ведро
  3. Выберите нужные файлы и папки, установив флажки слева от списка
  4. Нажмите кнопку «Дополнительно» вверху списка, нажмите «Сделать общедоступным»
  5. Подтвердите, нажав «Опубликовать".Файлы не будут иметь публичный доступ для записи, несмотря на предупреждение «... читать этот объект, читать и писать разрешения».
1 голос
/ 13 июня 2017

Используя Браузер S3 , вы можете обновлять разрешения, используя графический интерфейс, также рекурсивно. Это полезный инструмент и бесплатный для некоммерческого использования.

0 голосов
/ 10 сентября 2018

Используйте Генератор политик AWS , чтобы создать политику, соответствующую вашим потребностям.Основным в генераторе политики должен быть пользователь / роль IAM, который вы будете использовать для доступа к объекту (ам).Ресурс ARN должен быть arn:aws:s3:::mybucket/sub/dirs/are/supported/*

Далее, нажмите «Добавить заявление» и выполните.Вы наконец получите JSON, представляющий политику.Вставьте это в раздел управления политикой корзины s3, который находится на странице «Страница корзины s3 в AWS -> разрешения -> политика корзины».

0 голосов
/ 21 марта 2018

Transmit 5

Я хотел бы добавить это здесь для потенциальных пользователей macOS, у которых уже есть прекрасное FTP-приложение под названием Transmit by Panic.

У меня уже былоПаника, и он поддерживает S3 Buckets (не уверен, какая версия это вошло, но я думаю, что обновления были бесплатными).Он также поддерживает рекурсивное обновление разрешений на чтение и запись.

Вы просто щелкаете правой кнопкой мыши по каталогу, который хотите обновить, и выбираете разрешения на чтение и запись, для которых хотите их установить.

Это некажется очень быстрым, но вы можете открыть файл журнала, перейдя в Window> Transcript, чтобы вы хотя бы знали, что он что-то делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...