Я пытаюсь поместить объект (загрузить) в S3 из моей Java лямбда-функции. Тем не менее, я получаю сообщение об ошибке, говорящее, что заголовок перенаправления не поддерживается, несмотря на то, что я никогда не устанавливал его. (Отредактированная) ошибка:
x-amz-website-redirect-location header is not supported for this operation. (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: XXX; S3 Extended Request ID: XXXXXX)
Мой Java класс, который выполняет загрузку, выглядит следующим образом:
public class Upload {
private String bucket = "";
private String key = "";
private AmazonS3 s3;
public Upload() {
AWSCredentialsProvider s3cred = new DefaultAWSCredentialsProviderChain();
AmazonS3ClientBuilder awsCb = AmazonS3ClientBuilder.standard();
s3 = awsCb.withCredentials(s3cred).build();
}
public void uploadToS3() {
PutObjectRequest por = new PutObjectRequest(bucket, key, "hello world");
por.setStorageClass(StorageClass.Standard);
por.setCannedAcl(CannedAccessControlList.BucketOwnerFullControl);
s3.putObject(por);
}
}
Эта ошибка действительно сбивает с толку я, потому что нигде в моем коде я никогда не устанавливал перенаправление.
Этот класс используется из другого метода, который создает объект Upload, устанавливает контейнер и ключ (с не показаны методы get и set) и вызывает uploadToS3()
. Трассировка стека ошибки указывает на s3.putObject(por);
.
Я пытался добавить por.setRedirectLocation("");
до s3.putObject(por);
и та же проблема. Я также попытался por.setRedirectLocation(null);
и получил ожидаемое исключение NullPointerException.
Любая помощь приветствуется!