我正在使用 Amazon S3 进行项目,并且正在使用 AWS SDK 2 与 S3 进行交互。我在我的 S3 帐户中创建了许多旧存储桶,现在我想更改身份验证代码和设置 ACL。
我创建了 S3Client :
AwsBasicCredentials awsCreds = AwsBasicCredentials.create(
ACCESS_KEY,
SECRET_KEY);
S3ClientBuilder s3ClientBuilder = S3Client.builder().credentialsProvider(StaticCredentialsProvider.create(awsCreds));
if (regionString != null) {
Region region = Region.of(regionString);
s3ClientBuilder.region(region);
}
S3Client s3Client = s3ClientBuilder.build();
return s3Client;
我给出的默认区域是:US_EAST_1。
如果我没有指定这个区域,那么它会显示存储桶的创建日期错误。
现在通过使用上面的 S3client,我正在前进并使用 ACL:
software.amazon.awssdk.services.s3.model.GetBucketAclRequest getBucketAclRequest =
software.amazon.awssdk.services.s3.model.GetBucketAclRequest.builder().bucket(sbktname).build();
GetBucketAclResponse bucketAcl1 = s3Client.getBucketAcl(getBucketAclRequest);
但它抛出问题:software.amazon.awssdk.services.s3.model.S3Exception:授权标头格式错误;区域“us-east-1”是错误的;期待“eu-central-1”
我的问题是,我怎样才能从已经使用存储桶名称创建的现有 s3 客户端获取区域。我没有存储桶对象,我只有存储桶名称。
使用存储桶名称我试图获取位置,但它抛出了与上述区域相同的问题。