Как определить разрешения в Amazon s3 - PullRequest
5 голосов
/ 04 августа 2010

У меня есть такая структура на amazon -

(bucket name) MyImages
  ---  (key) general
       ---- 1.jpg
       ---- 2.jpg

Я создал ключ (общий) с помощью инструмента S3 Firefox Organizer и установил разрешение на чтение для всех.Теперь с помощью Java-программы, когда я загружаю изображения внутри этого ключа, я хочу установить разрешение для каждого объекта, как у ключа.Но этого не происходит, и мне нужно написать дополнительную строку кода для настройки прав доступа для каждого объекта.

AccessControlList acl = s3.getBucketAcl("MyImages");
// give everyone read access
acl.grantPermission(GroupGrantee.AllUsers, Permission.Read);
s3.setObjectAcl("MyImages", "general/1.jpg", acl);

Есть ли способ избавиться от приведенного выше кода.Почему объекты не получают разрешения в качестве ключа или корзины?

Ответы [ 3 ]

8 голосов
/ 25 июля 2011

Следующий код работает для меня. Замените file_to_save файловым объектом, который вы записываете на S3.

PutObjectRequest por = new PutObjectRequest("MyImages", "general/1.jpg", file_to_save);

o.setCannedAcl(CannedAccessControlList.PublicRead);
2 голосов
/ 25 июля 2011

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

Разрешения могут применяться для существующих файлов, а также для всех новых файлов.

Вот пример политики Bucket, которая делает все файлы в корзине общедоступными:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowPublicRead",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

Вот как применить Bucket Policy с помощью бесплатного программного обеспечения браузера S3:
http://s3browser.com/working-with-amazon-s3-bucket-policies.php

0 голосов
/ 28 мая 2014

Если вы хотите получить доступ к вашему ведру с помощью «браузерного» программного обеспечения, такого как s3browser, s3fox или s3 browser для chrome, вам нужно добавить разрешение на корень вашего s3 следующим образом.

   {
           "Effect": "Allow",
           "Action": "s3:ListAllMyBuckets",
           "Resource": "arn:aws:s3:::*"
   }

давая

{
  "Version": "2008-10-17",
  "Statement": [
    {       
      "Sid": "AllowPublicRead",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    },
    {
       "Effect": "Allow",
       "Action": "s3:ListAllMyBuckets",
       "Resource": "arn:aws:s3:::*"
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...