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

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

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

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

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

Ответ 1

Я предлагаю применить политику сегмента 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.) Политику Bucket можно изменить, перейдя в корневой каталог корзины в веб-консоли AWS и выбрав Свойства> Разрешения. Подкаталоги группы также имеют Свойства> Разрешения, но нет опции для Edit bucket policy

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

Ошибка: в запрошенном ресурсе отсутствует заголовок "Access-Control-Allow-Origin".
Источник ' http://localhost: 9000 ', следовательно, не имеет доступа. Ответ имеет HTTP-код состояния 403

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

Вы можете установить 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/_"

Ответ 9

Передача 5

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

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

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

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

Ответ 10

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

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