Как включить публичный доступ для чтения к корзине S3 в октябре 2023 года с помощью AWS Java SDK 1.12.x?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как включить публичный доступ для чтения к корзине S3 в октябре 2023 года с помощью AWS Java SDK 1.12.x?

Сообщение Anonymous »


Кажется, что-то изменилось в апреле 2023 года, и теперь мои списки управления доступом больше не работают. Кажется, мне нужно отключить блокировку публичного доступа с консоли AWS, а затем создать политику, разрешающую публичное чтение в мою корзину.

Мне удалось прочитать мой index.html из Интернета, но только вручную отключив параметр «Блокировать весь публичный доступ» в консоли AWS. Я динамически создаю сегменты из своего кода и не могу открыть консоль для каждого отдельного сегмента.

Изменение блокировки публичного доступа из кода просто приводит к отказу в доступе. Политика устанавливается нормально. Как получить публичный доступ для чтения из Java-кода? Мой код следующий:
public S3_UpdaterController() { s3client.createBucket("ecotest123456789"); Список сегментов = s3client.listBuckets(); for (Объект объекта: ведра) { System.out.println(object.toString()); } String BucketName = "ecotest123456789"; String InitialString = "тест"; java.io.InputStream targetStream = новый java.io.ByteArrayInputStream(initialString.getBytes()); PutObjectRequest putObjectRequest = новый PutObjectRequest("ecotest123456789", "index.html", targetStream,null); //s3client.deleteBucketPolicy(имя бакета); s3client.setBucketPolicy(имя корзины, getPublicReadPolicy(имя корзины)); BucketPolicy Bucket_policy = s3client.getBucketPolicy(имя корзины); System.out.println(bucket_policy.getPolicyText()); AccessControlList acl = новый AccessControlList(); acl.grantPermission(GroupGrantee.AllUsers, Permission.Read); //все пользователи или прошедшие проверку подлинности //putObjectRequest.setAccessControlList(acl); s3client.putObject(putObjectRequest);//.withCannedAcl(CannedAccessControlList.PublicRead)); s3client.setBucketWebsiteConfiguration(bucketname,new BucketWebsiteConfiguration("index.html")); //ЭТОТ ОШИБКА, ДОСТУП ЗАПРЕЩЕН s3client.setPublicAccessBlock(новый SetPublicAccessBlockRequest().withBucketName(bucketname)); } public static String getPublicReadPolicy (String Bucket_name) { Политика Bucket_policy = новая Политика().withStatements( новое заявление (Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(новый ресурс( "arn:aws:s3:::" + имя_ведра + "/*"))); вернуть ведро_policy.toJson(); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»