【问题标题】:Downloading (a batch of) files directly to AWS s3 bucket from url从 url 将(一批)文件直接下载到 AWS s3 存储桶
【发布时间】:2021-04-11 10:03:07
【问题描述】:

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

我的第一次迭代是在本地下载文件并使用 AWS CLI 将它们移动到 S3 存储桶:aws s3 cp <local file> s3://<mybucket>,这很有效。 为了避免在本地下载,我使用了一个 ec2 实例,并且从那里基本上做了同样的事情。然而问题是文件非常大,所以我宁愿不必存储文件并使用我的 ec2 实例将文件流式传输到我的 S3 存储桶。

这可能吗?

【问题讨论】:

  • AWS S3 SDK 支持流式传输,如果您准备编写一些代码的话。

标签: amazon-web-services amazon-s3 amazon-ec2


【解决方案1】:

您可以使用字节数组来填充 Amazon S3 存储桶。例如,假设您使用的是适用于 Java V2 的 AWS 开发工具包。您可以像这样将对象放入存储桶中:

  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

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2019-11-25
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多