Надеюсь, что это кому-нибудь поможет.
ользую AWS Credentials * для подключения к своему AWS S3.
final AmazonS3 s3 = new AmazonS3Client(
new AWSStaticCredentialsProvider(new BasicAWSCredentials("accessKey*",
"secretKey")));
s3.setRegion(Region.US_West.toAWSRegion());
s3.setEndpoint("s3-us-west-1.amazonaws.com");
С моего локального хоста я могу загрузить изображение, и так как у меня включено управление версиями, я получаю versionId для следующей строки.
versionId = s3.putObject(new PutObjectRequest("bucketName", name, convFile)).getVersionId();
PS 3: вышеуказанный фрагмент кода обернут в блок try-catch, и блок catch напечатает это
You failed to upload fileName => fileName.jpeg (Permission denied)
Но если я выполняю тот же код из моего ElasticBeanStalk, я получаю versionId = null, и изображение не загружается в S3.
Я не вижу исключений для учетных данных.
Когда я искал accessKey в Users (под IAM), я понял, что он не назначен ни одному пользователю.Прочитав все документы, я создал двух пользователей. Один из группы, которую я создал, другой без группы.
Я использовал accessKey этих пользователей и до сих пор не могу загрузить изображение на S3.
Вот как выглядит моя политика корзины После создания двух пользователей
{
"Version": "2012-10-17",
"Id": "Policy1",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::someNumnber:user/username"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucketName"
}
]
}
Перед созданием двух пользователей (и следующая настройка была установлена, когда localhost успешно загрузил изображение на S3)
{
"Version": "2012-10-17",
"Id": "Policy15",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bcktName",
"arn:aws:s3:::bcktName/*"
]
}
]
}
Я полностью поражен этим вопросом в течение 4 вечеров. Пожалуйста, помогите мне. Я не использую boto или любой другой материал. Это прямой военный файл, загруженный на tomcat, который должен загружать изображения на S3. Это работает в localhost, но не в S3.
PS: так выглядит моя конфигурация CORS
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>20000</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
<ExposeHeader>x-amz-request-id</ExposeHeader>
<ExposeHeader>x-amz-id-2</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
PS 2:
Должен ли я что-нибудь сделать в списке контроля доступа? На данный момент я вижу, что учетная запись владельца совпадает с именем пользователя всего моего AWS. Я думаю, что ключ доступа и секретный ключ, который работает от локального, также связан с учетной записью владельца.