从url直接下载(一批)文件到AWS s3 bucket



我使用的是使用API(https://scihub.copernicus.eu/userguide/OpenSearchAPI)下载大量(100+(的大文件(每个约5GB(,我想将这些文件存储在AWS s3存储桶中。

我的第一次迭代是在本地下载这些文件,并使用AWS CLI将它们移动到S3存储桶:aws s3 cp <local file> s3://<mybucket>中,这样就可以了。为了避免在本地下载,我使用了一个ec2实例,基本上也从那里下载。然而,问题是这些文件很大,所以我甚至不想存储这些文件,而是使用我的ec2实例将文件流式传输到我的S3存储桶。

这可能吗?

您可以使用字节数组来填充AmazonS3存储桶。例如,假设您使用的是针对Java V2的AWS SDK。你可以把一个物体放入这样的桶中:

PutObjectRequest putOb = PutObjectRequest.builder()
.bucket(bucketName)
.key(objectKey)
.metadata(metadata)
.build();

PutObjectResponse response = s3.putObject(putOb,
RequestBody.fromBytes(getObjectFile(objectPath)));

请注意RequestBody.fromBytes方法。完整示例:

https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/PutObject.java

但有一点需要注意。如果你的文件真的很大,你可能需要考虑分部分上传。参见此示例:

https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/S3ObjectOperations.java

最新更新