UPD: решено: проблема с Amazon ACL в Java SDK v2 - PullRequest
0 голосов
/ 30 марта 2019

Я работаю над AWS s3 с java sdk v2 и зацикливаюсь на программной настройке ACL. На веб-сайте AWS говорят, что лучше использовать пользователя IAM с идентификатором IAM и пропуском, но в примере ACL я видел электронную почту.

 Grantee grantee = Grantee.builder().emailAddress(email).build();

И еще я сомневаюсь, как использовать cannedAcl со сборщиком . Я не могу найти официальное обучение в AWS с загрузкой объекта с предварительно установленной для него политикой ALLREAD (это небезопасно или какая-то другая плохая практика?). Мне нужен совет или ссылка на учебник в Интернете. Теперь я пытаюсь [это] [1], но это для SDK v1.

ОБНОВЛЕНИЕ: TL; DR. это солютон для меня:

 PutObjectAclRequest putAclReq = PutObjectAclRequest.builder()
                .bucket(bucket)
                .key(key)
                .acl(ObjectCannedACL.PUBLIC_READ)  // <---- that's it!
                .build();
        s3.putObjectAcl(putAclReq);

полный код простой загрузки с cannedACL на загруженный объект:

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.*;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

public class OtherAcl {
    private static S3Client s3;

    public static void main(String[] args) throws IOException {

        Region region = Region.US_WEST_2;
        s3 = S3Client.builder().region(region).build();

        String bucket = "q-bucket" + System.currentTimeMillis();
        String key = "future_city_by_tenmoom.jpg";
        Path path = Paths.get("D:\\images\\future_city_by_tenmoom.jpg");

        createBucket(bucket, region);
        s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key)
                .build(), path);
        /*   PutObjectAclRequest.Builder aclRequest =  PutObjectAclRequest.builder().acl(ObjectCannedACL.PUBLIC_READ);*/


        PutObjectAclRequest putAclReq = PutObjectAclRequest.builder()
                .bucket(bucket)
                .key(key)
                .acl(ObjectCannedACL.PUBLIC_READ)  // <---- that's it!
                .build();
        s3.putObjectAcl(putAclReq);
    }

    private static void createBucket(String bucket, Region region) {
        s3.createBucket(CreateBucketRequest
                .builder()
                .bucket(bucket)
                .createBucketConfiguration(
                        CreateBucketConfiguration.builder()
                                .locationConstraint(region.id())
                                .build())
                .build());

        System.out.println(bucket);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...