java - Amazon S3 通过重命名文件夹复制 150 万个对象
问题描述
我有一个包含 150 万个对象(大约 5 TB 数据)的文件夹,其中包含下一个格式为 123-John 的文件夹。我需要将所有这些文件夹的内容复制到新文件夹中,并将其重命名为 123 格式。我想通过 java.util 来完成。
显然我不能像这样一个一个地做:
ObjectListing objectListing = s3.listObjects(listObjectsRequest);
boolean processable = true;
while (processable) {
processable = objectListing.isTruncated();
renameAndCopyOneByOne(objectListing.getObjectSummaries()); // this edits name and makes call to s3.copyObject()
if (processable) {
objectListing = s3.listNextBatchOfObjects(objectListing);
}
}
这将导致大约 150 万次调用
s3.copyObject(bucket, sourceKey, bucket, destinationKey)
我想用批处理来做,但问题是它只能通过创建 CSV 格式的清单文件来完成,格式如下
bucketName,keyName
但这只是我想要对其采取行动的对象的体现。我无法列出要保存到的位置并指定已编辑的文件夹名称。而且我仍然必须将 150 万的 CSV 拆分为较小的,并向 S3 创建几个请求以创建几个不明显跟踪的作业。
您能否给我一个提示,AWS 工具中的哪些内容可以完全满足我对这项任务的所有需求?
解决方案
好吧,在花了一些时间研究如何正确执行之后,我认为唯一的方法是通过 Java 的一些批处理作业进行此类迁移,以分割负载。因为 AWS 没有适合我的情况的工具。
推荐阅读
- node.js - 使用 Google OAuth api 时如何摆脱“此应用未验证”警告?
- javascript - 时刻对象到日期选择器
- angular - 如何在角度 slickgrid 自定义格式化程序中显示自定义角度标签
- list - 在 Ansible 的 netbox_device 中循环多个列表
- sql - JOIN 2 个具有降级条件的表
- php - 为什么我不能使用 artisan 进行迁移?
- python - ModuleNotFoundError:即使我已将其安装在 conda/python 中,也没有名为“statsmodels”的模块
- javascript - React Native 多数据输入是如何实现的?
- mysql - 将 python 列表提交到单个 MYSQL 列中
- kubernetes - 当同名部署、svcs等在同一个命名空间中运行时,强制部署helm release