2016-11-01 5 views
0

Что я пытаюсь сделать, это изменить ACL для около 901 объектов на public-read. Я думаю, проблема в том, что у всех этих файлов нет «admin» Permissions. Permissions находится на консоли управления S3 на вкладке свойств после выбора ведра или объекта.Невозможно изменить ACL объекта S3

У каждого из этих объектов также нет Owner.

У моей учетной записи SAM IAM есть полный доступ к администрированию S3 моей команды, и я также попытался настроить Permissions с помощью учетной записи root S3. В ведре нет проблем с политикой.

У каждого объекта нет Permissions, поэтому я предполагаю, что мне нужно добавить 'admin' Permissions в эти файлы.

Я попытался добавить Permissions с помощью консоли управления S3, но я получаю

Извините! У вас нет разрешений для просмотра этого ведра.

Я также попытался с помощью CLI AWS, но я получаю следующее сообщение об ошибке, даже если у меня есть полный доступ S3:

$ aws s3api put-object-acl --bucket my-bucket--key item/image.jpeg --acl public-read 
An error occurred (AccessDenied) when calling the PutObjectAcl operation: Access Denied 

Я проверил несколько других ответов StackOverflow, но не нашел, что с рабочим решением.

Я надеюсь на решение, которое не требует перезагрузки 900 файлов.

+0

Все объекты в одном каталоге/каталоге? Если это так, вы можете использовать политику Bucket для мгновенного предоставления доступа без изменения разрешений для каждого объекта. Считаете ли вы использование политики ведра? –

+0

Да, я пробовал это - изначально написал это, но должен был его стереть. Политика ведра не влияет на объекты проблемы. Я думаю, причина, по которой это не имеет никакого эффекта, состоит в том, что объекты, о которых идет речь, не имеют владельца. – Sherlock

ответ

0

Используйте политику Bucket Policy, чтобы предоставить доступ к объектам.

По умолчанию все объекты в Amazon S3 являются частными. Затем вы можете добавлять разрешения, чтобы люди могли получить доступ к вашим объектам. Это может быть сделано с помощью:

  • Access Control List разрешений на отдельных объектах
  • Bucket Policy, который предоставляет широкий круг доступа, основанный на пути, IP-адрес, ссылающиеся и т.д.
  • IAM Users and Groups, которые предоставляют разрешения для пользователей с учетными данными АМСА
  • Pre-Signed URL, которые предоставляют временный доступ к объектам S3 с помощью авторизованного URL

Вы хотите предоставить общественности доступ к нескольким объектам. Это можно сделать, указав для каждого объекта ACL public-read, или создав политику Bucket Policy.

Политика ведра может сделать ведро, или часть ведра, общедоступной. Он также может предоставлять доступ только при выполнении определенных условий, таких как запросы, исходящие из определенного диапазона IP-адресов, или ограничение доступа через время суток.

Вы также отмечаете, что «политики ведра не влияют на объекты проблемы». Это довольно странно, потому что политика ведра может предоставить доступ, даже если на объектах не определено ни одного владельца.

Чтобы подтвердить это, я сделал следующее:

  • Созданный новый Amazon S3 ведро
  • Загружено объект в ведро
  • Accessed свойства объекта, и удалены все разрешения
  • Пробные Открытие объект с помощью анонимного URL (например, https://s3.amazonaws.com/my-bucket/foo.jpg) и получил Access Denied ответ - это, как ожидается,

Затем я добавил политику Ковш:

{ 
    "Id": "Policy1", 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "Stmt1", 
     "Action": [ 
     "s3:GetObject" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::MY-BUCKET/*", 
     "Principal": "*" 
    } 
    ] 
} 
  • Пробовал открытие объект по одному и тому же анонимному URL-адресу и достиг успешно получить доступ к объекту

Таким образом, политика ведра корректно функционирует, даже если на объектах нет определенных списков ACL.

+0

После дальнейших исследований. Я думаю, что моя проблема заключается в том, что мои объекты бесхозяйны не только из-за отсутствия разрешений. Я могу добавлять/удалять разрешения просто отлично с объектами, которые все еще имеют владельца. – Sherlock

+1

@ Шерлок, вероятно, правильный. Загрузка, принадлежащая «анонимному пользователю» (никто), может быть удалена только - вы не можете сделать что-либо еще для них, если их ACL еще не корректен (например, загружен с помощью ACL-ведомого владельца полного контроля)). Являясь владельцем ведро объектов, которые не принадлежат вам, не имеет особых привилегий, кроме удаления. –

Смежные вопросы