我可以更新现有的Amazon S3对象吗?

Arv*_*ind 31 java amazon-s3 amazon-web-services

我正在查看Amazon S3样本,样本用于插入/删除...

但我想用新数据更新现有的blob.基本上内容是文本文件,文本已被修改,我希望S3对象存储新的文本内容.

我如何用Java做到这一点?

Ste*_*pel 41

更新Amazon S3中的现有对象与首先创建现有对象没有区别,即使用完全相同的PUT对象操作来上传对象并覆盖现有对象(如果它不受其他方式保护,例如通过使用存储桶策略对象版本控制)

您可以在使用AWS SDK for Java上传对象中找到完整的代码示例,主要部分归结为:

AmazonS3 s3client = new AmazonS3Client(new PropertiesCredentials(
        S3Sample.class.getResourceAsStream(
                "AwsCredentials.properties")));
try {
    System.out.println("Uploading a new object to S3 from a file\n");
    File file = new File(uploadFileName);
    s3client.putObject(new PutObjectRequest(
                             bucketName, keyName, file));

 } catch (AmazonServiceException ase) {
    System.out.println("Caught an AmazonServiceException, which " +
            "means your request made it " +
            "to Amazon S3, but was rejected with an error response" +
            " for some reason.");
    // ... error handling based on exception details
}
Run Code Online (Sandbox Code Playgroud)

  • 斯蒂芬还说,没有"部分blob"更新.您需要上传文件的整个新副本. (12认同)
  • @Steffen - 我是 S3 的新手,因此有一个快速相关的问题 - 如果我有一个 1 GB 的巨大 csv 文件,例如在 S3 存储桶中,并且我想向其中添加一个新行。执行此操作的最佳方法是什么? (2认同)