Amazon web services 将具有特定扩展名的文件从多个S3对象移动到另一个S3存储桶

Amazon web services 将具有特定扩展名的文件从多个S3对象移动到另一个S3存储桶,amazon-web-services,amazon-s3,aws-cli,Amazon Web Services,Amazon S3,Aws Cli,我有以下S3桶结构: s3://<bucket_name>/ |---object_1/ | |---images/ | | |---<image_11.jpg> | | |---<image_12.jpg> | |---annotation/ | | |---<image_11.xml> | | |---<image_12.xml> |---object_2/ | |---images/ |

我有以下S3桶结构:

s3://<bucket_name>/
|---object_1/
|   |---images/
|   |   |---<image_11.jpg>
|   |   |---<image_12.jpg>
|   |---annotation/
|   |   |---<image_11.xml>
|   |   |---<image_12.xml>
|---object_2/
|   |---images/
|   |   |---<image_21.jpg>
|   |   |---<image_22.jpg>
|   |---annotation/
|   |   |---<image_21.xml>
|   |   |---<image_22.xml>

s3:///
|---对象1/
||---图像/
|   |   |---
|   |   |---
||---注释/
|   |   |---
|   |   |---
|---对象2/
||---图像/
|   |   |---
|   |   |---
||---注释/
|   |   |---
|   |   |---
我希望将所有图像和注释文件分别移动到两个单独的S3对象中,以便目标对象结构如下所示:

s3://<bucket_name>/
|---all-images/
|   |---<image_11.jpg>
|   |---<image_12.jpg>
|   |---<image_21.jpg>
|   |---<image_22.jpg>
|---all-annotation/
|   |---<image_11.xml>
|   |---<image_12.xml>
|   |---<image_21.xml>
|   |---<image_22.xml>
s3:///
|---所有图像/
|   |---
|   |---
|   |---
|   |---
|---所有注释/
|   |---
|   |---
|   |---
|   |---
问题: 我尝试了这个解决方案,但它没有改变S3对象结构。所有文件都是用文件夹名复制的(这里,
object\u 1/images/image\u 11.jpg
)。我希望所有图像都在一个对象下,没有目录结构(这里,
all images/
)。如何使用AWS CLI或Sage Maker笔记本实例实现这一点?

步骤1 创建前缀列表,将其用作引用

步骤2 迭代前缀列表(此处,
object_1
obkect_2
…)和
cp
sync
源存储桶与目标存储桶。下面的命令是我在Sage Maker笔记本实例上使用的命令

/bin/bash
对于\u前缀列表\u中的标签:
!aws s3 cp--递归的's3:///f“{label}”/images/''s3:///all images/'