How to create a java OutputStream for an S3 object and write value to it?

做~自己de王妃 提交于 2021-02-16 19:57:07

问题


Existing ways of adding content to an S3 file using methods in AmazonS3 class are

  • by putObject with an InputStream
  • Creating a local file with content and uploading it to S3.

Is there a way an OutputStream can be created for an existing S3 object to which values from a list can be written into? I see there are no APIs for doing so.


回答1:


It's possible to create an S3OutputStream which wraps the AmazonS3 client. See this gist for the implementation: https://gist.github.com/blagerweij/ad1dbb7ee2fff8bcffd372815ad310eb It automatically detects large files, and uses multi-part transfers when required. It uses a byte-array for buffering, the size of that buffer depends on your use case. (default is 10MB)

For example:

   final S3Client s3Client = AmazonS3ClientBuilder.defaultClient();
   final OutputStream out = new S3OutputStream(s3Client, "bucket", "path/file.ext");



回答2:


You can take a look at AWS SDK Performing Operations on an Amazon S3 Object

...
S3Client s3;
...
// Put Object
s3.putObject(bucket,object);


来源:https://stackoverflow.com/questions/60212728/how-to-create-a-java-outputstream-for-an-s3-object-and-write-value-to-it

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!