Надеюсь, что это кому-нибудь поможет.

ользую 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. Я думаю, что ключ доступа и секретный ключ, который работает от локального, также связан с учетной записью владельца.

Ответы на вопрос(1)

Ваш ответ на вопрос