amazon-web-services - 如何将 S3 存储桶的特定文件夹的内容复制到不同 S3 存储桶的另一个特定文件夹

标签 amazon-web-services amazon-s3 aws-cloudformation

我需要将 S3 存储桶的特定文件夹的内容复制到另一个 S3 存储桶的不同文件夹。两个 S3 存储桶位于同一区域并由同一账户拥有。

例如:假设我有一个名为“ABC-Inbound”的 S3 存储桶,其中有一个名为“from_A”的文件夹。 此外,我在同一区域中有另一个名为 workloads 的 S3 存储桶,其中有一个名为“A_data”的文件夹

是否可以编写 Cloudformation 复制规则来将 from_A 文件夹的内容复制到 A_data 文件夹?我不想复制整个文件夹,而只想复制内容。

尝试过this通过向复制配置添加过滤器,但这不起作用,因为它将整个文件夹复制到其他存储桶。

    {
  "Role": "IAM-role-ARN",
  "Rules": [
    {
      "Status": "Enabled",
      "Priority": 1,
      "DeleteMarkerReplication": { "Status": "Disabled" },
      "Filter" : { "Prefix": "from_A/"},
      "Destination": {
        "Bucket": "arn:aws:s3:::workloads"
      }
    }
  ]
}

最佳答案

Amazon S3 复制将在存储桶之间复制对象,您可以指定前缀以仅复制存储桶的一部分。

但是,在复制对象时,S3 Replication 不会更改对象的Key(文件名)。 Key 包含对象的完整路径。这意味着源文件夹和目标文件夹将相同。

如果您必须复制到目标存储桶中的不同文件夹/路径,那么您需要自行管理复制,例如:

  • 定期运行 aws s3sync 命令在存储桶之间复制文件,或者
  • 创建一个 AWS Lambda 函数,该函数在源存储桶中创建对象时触发。编写 Lambda 函数代码以将对象复制到目标存储桶和路径。

以下是此类 Lambda 函数的示例:Copying files between S3 buckets

关于amazon-web-services - 如何将 S3 存储桶的特定文件夹的内容复制到不同 S3 存储桶的另一个特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76627069/

相关文章:

amazon-web-services - 无法提取 secret 或注册表身份验证 : pull command failed: : signal: killed

python - 使用 boto HTTPS 上传到 S3?

amazon-web-services - 将值从 CloudFormation 传递到 Swagger 文件

apache-spark - AWS Glue 抓取动态 S3 路径位置

linux - 在 Linux 上的 AWS Elastic Beanstalk 中部署多个 ASP.NET Core 应用程序(使用 Kestrel 服务器)

java - 在amazon sqs、alpine sqs spring boot中批量消费消息

amazon-web-services - Aurora PostgreSQL 引擎 : no space left on device

python - 从 Amazon S3 上的子文件夹获取上次修改的文件路径。 Python

file - 我可以创建一个带有内容处置 : attachment? 的一次性 S3 链接吗

amazon-web-services - 在 AWS Cloudformation 控制台中获取完整的事件文本