Если вы используете приложение Java, вы можете попробовать использовать несколько потоков для копирования файлов:
private ExecutorService executorService = Executors.fixed(20);
public void moveFiles(String fromKey, String toKey) {
Stream<S3ObjectSummary> objectSummeriesStream =
this.getObjectSummeries(fromKey);
objectSummeriesStream.forEach(file ->
{
executorService.submit(() ->
this.s3Bean.copyObject(bucketName, file.getKey(), bucketName, toKey);
this.s3Bean.deleteObject(bucketName, file.getKey());
)};
});
}
Это должно ускорить процесс.
Альтернативой может быть использование AWS-лямбды.Как только файл появится в исходной корзине, вы можете, например, поместить событие в очередь SQS FIFO.К этому событию лямбда начнет копировать один файл.Если я не ошибаюсь параллельно, вы можете запустить до 500 экземпляров лямбд.Должно быть быстро.