【问题标题】:How to change Storage Class on AWS S3 object via java sdk通过 java sdk 更改 AWS S3 对象上的存储类
【发布时间】:2018-11-01 15:17:09
【问题描述】:

我是 AWS 新手,我需要为 s3 存储桶中的现有对象设置存储类.. 可以找到使用 java SDK 的方法

【问题讨论】:

    标签: amazon-s3 aws-sdk aws-java-sdk


    【解决方案1】:

    changeObjectStorageClass 看起来很简单:

    AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.standard()
                        .withRegion(clientRegion)
                        .withCredentials(new ProfileCredentialsProvider())
                        .build();
    
    PutObjectRequest request = new PutObjectRequest(bucketName,
                                                    fileObjKeyName, new File(fileName));
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType("binary/octet-stream");
    request.setMetadata(metadata);
    s3Client.putObject(request);
    
    s3Client.changeObjectStorageClass(bucketName, fileObjKeyName,
                                      StorageClass.ReducedRedundancy );
    

    唯一奇怪的部分是您需要在AmazonS3Client 的实例上使用changeObjectStorageClass - 接口上的版本AmazonS3 已弃用。

    【讨论】:

      【解决方案2】:

      在任何情况下都不需要使用不推荐使用的方法。 在我的情况下需要更新现有对象:

         AmazonS3Client s3Client =  (AmazonS3Client)AmazonS3ClientBuilder.standard()
                      .withRegion(clientRegion)
                      .withCredentials(new ProfileCredentialsProvider())
                      .build();
        CopyObjectRequest copyRequest = new CopyObjectRequest(sourceBucketName, sourceKey, destinationBucketName, destinationKey)
              .withStorageClass(StorageClass.ReducedRedundancy);
              s3Client.copyObject(copyRequest);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-24
        • 2011-09-25
        • 1970-01-01
        • 2016-05-10
        • 2012-10-03
        • 2017-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多