Я пытаюсь изменить код для загрузки больших изображений.Первоначально изображения были сохранены в S3 в лямбда-функции, и она работала просто отлично в PROD.Сейчас я извлек эту часть из функции и пытался сделать это через Java SDK для AWS.
Это работало нормально в среде DEV, потому что корзина там общедоступна.Когда я проверял это с настройками PROD.Я получаю сообщение об ошибке «Отказано в доступе».
Ящик закрыт в PROD, и у пользователя есть доступ ко всем действиям S3.Я мог получить доступ к корзине с помощью интерфейса командной строки AWS, но при попытке использовать AWS Java SDK выдается ошибка «Отказано в доступе».Это код на Java.Я явно установил регион только для того, чтобы убедиться, что он получился правильным, хотя я знаю, что регион является регионом по умолчанию.
BasicAWSCredentials awsCreds = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
.withRegion(Regions.US_EAST_1)
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.build();
String imageS3Url = null;
ObjectMetadata d = new ObjectMetadata();
try {
s3client.putObject(new PutObjectRequest(S3_BUCKET_NAME, s3Key, stream, d));
imageS3Url = "https://s3-"+ S3_REGION_NAME +".amazonaws.com/" + S3_BUCKET_NAME +"/"+ s3Key;
}catch(Exception ex) {
log.debug(ex.getMessage());
}
Мне не хватает какой-либо конфигурации для предоставления доступа к AWS java SDK для доступаведро S3?Версия AWS Java SDK - 1.11.411.
Вот анонимные версии политики пользователя и корзины IAM:
{
"Version": "2012-10-17",
"Id": "PolicyABC”,
"Statement": [
{
"Sid": "Stmt123”,
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789:user/user-name”
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket-name”
}
]
}
Политика пользователя IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket-name”,
"arn:aws:s3:::bucket-name/*”
]
}
]
}