【问题标题】:Move 2000 objects from one S3 bucket to another将 2000 个对象从一个 S3 存储桶移动到另一个存储桶
【发布时间】: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


【解决方案1】:

您或许应该尝试使用 S3 批处理操作。

【讨论】:

  • 如果有更具体的命令或示例,这将是一个更好的答案
猜你喜欢
  • 2021-01-17
  • 2020-05-29
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 2018-05-08
  • 2021-07-28
  • 1970-01-01
  • 2020-09-15
相关资源
最近更新 更多