You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AWS Step Functions批量复制同S3存储桶路径下的对象?

AWS Step Functions批量复制S3对象的正确实现方式

不行,S3的CopyObject操作(Step Functions调用的底层API)不支持在CopySource参数中使用通配符*来批量复制对象。S3的对象操作是基于单个对象键的,CopySource必须指定具体的单个对象路径,无法通过通配符匹配多个对象。

要实现批量复制并重命名S3路径下的所有对象(含子文件夹中的parquet文件),需要分三步构建Step Functions工作流:

  • 第一步:获取目标路径下的所有对象列表
    调用S3:ListObjectsV2 API(或通过Lambda封装),传入源桶名称和目标前缀(比如path/to/files/),获取该前缀下所有对象的完整键列表。注意开启分页处理,避免因对象数量过多导致遗漏。

  • 第二步:遍历对象列表执行复制
    使用Step Functions的Map状态遍历第一步得到的对象列表,对每个对象单独执行S3:CopyObject操作:

    • 配置CopySource为完整的源对象路径(格式:源桶名/对象键)
    • 配置目标Bucket和Key:根据重命名规则生成新键,比如保留原目录结构并添加日期前缀,或替换部分路径。可以用Step Functions内置的States.Format、States.StringReplace等函数来生成新键,示例:
      "Key": {
        "States.Format": "backup/{}/{}",
        "$.currentDate",
        "States.StringReplace($.objectKey, "path/to/files/", "")
      }
      
  • 第三步:配置权限与错误处理

    • 确保Step Functions执行角色拥有S3:ListObjectsV2和S3:CopyObject权限,涉及的S3桶需配置对应桶策略允许该角色操作。
    • 在工作流中添加错误捕获逻辑,对复制失败的对象进行重试或记录,保证备份完整性。

内容的提问来源于stack exchange,提问作者FranG91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:20:11