首页 > 解决方案 > 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 工具中的哪些内容可以完全满足我对这项任务的所有需求?

标签: javaamazon-web-servicesamazon-s3

解决方案


好吧,在花了一些时间研究如何正确执行之后,我认为唯一的方法是通过 Java 的一些批处理作业进行此类迁移,以分割负载。因为 AWS 没有适合我的情况的工具。


推荐阅读