使用Java AWS SDK和访问点将对象上传到S3



我正在使用AWS Java SDK,我想使用访问点而不是bucket名称将对象上传到bucket。有可能吗?

我想通过使用接入点来实现这一点,因为bucket的公共访问是关闭的,但访问是通过接入点授予的。

是的,您可以使用访问点执行PutObject

以下是使用访问点支持的所有操作的列表。

只需使用接入点ARN来代替bucket名称。arn:aws:s3:<bucket-region>:<accountNumber>:accesspoint:<access-point-name>

适用于Java SDK v1和v2。在com.amazonaws:aws-java-sdk-s3:1.11.1004software.amazon.awssdk:s3:2.16.47上测试

示例代码AWS Java SDK 1.x:

String bucketName = "arn:aws:s3:<bucket-region>:<accountNumber>:accesspoint:<access-point-name>";
String filePath = "/Users/user/sample.txt";
String key = Paths.get(filePath).getFileName().toString();
final AmazonS3 s3 = AmazonS3ClientBuilder
.standard()
.withRegion(Regions.<bucket-region>)
.build();
try {
s3.putObject(bucketName, key, new File(filePath));
} catch (AmazonServiceException e) {
// handle exception or throw
throw e;
}

示例代码AWS Java SDK 2.x:

String bucketName = "arn:aws:s3:<bucket-region>:<accountNumber>:accesspoint:<access-point-name>";
String filePath = "/Users/user/sample.txt";
String key = Paths.get(filePath).getFileName().toString();
S3Client s3Client = S3Client
.builder()
.region(Region.<bucket-region>)
.build();
try {
PutObjectRequest putObjectRequest = PutObjectRequest
.builder()
.bucket(bucketName)
.key(key)
.build();
PutObjectResponse putObjectResponse = s3Client.putObject(putObjectRequest, Paths.get(filePath));
System.out.println(putObjectResponse.sdkHttpResponse().isSuccessful());
} catch (AmazonServiceException e) {
// handle exception or throw
throw e;
}

最新更新