Я работаю над 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);
}
}