【发布时间】:2021-07-25 12:36:47
【问题描述】:
我需要将大约 2000 个 S3 对象从一个 S3 存储桶移动到同一区域和同一 AWS 账户中的另一个存储桶。我有一个需要移动的 S3 键列表(不是存储桶中的每个对象)。如果我为每个键使用forEach 循环并使用s3Client.copyObject(),则请求会在 30 秒后超时,并且它能够复制大约 200 个对象。在这种情况下我该怎么办。
我的代码是这样的
List<String> s3Keys; // size of list is 1000
s3Keys.forEach(key ->
s3Client.copyObject(bucket1, key, bucket2, key)
);
它会持续运行 30 秒。然后超时。
【问题讨论】:
-
确保您没有在线程中运行这些移动。我们无法检查我们看不到的代码。并添加重试逻辑。同样,当我们看不到代码时也无能为力。您应该将其包含在问题中。不要让我们凝视我们的水晶球。
-
您是否考虑过将
--recursive用于您的键列表,而不是使用 for 循环移动每个对象? AWS CLI S3 mv -
您是否在 AWS Lambda 函数中运行此代码?如果是这样,增加超时设置以允许函数有移动时间。复制是按顺序完成的,所以需要一段时间。
-
在我的用例中增加超时似乎不是一个好方法。
标签: java amazon-web-services amazon-s3