使用命令行界面,我可以在两个存储桶之间复制文件。
$ aws s3 sync s3://mybucket-src s3://mybucket-target --exclude *.tmp
这将从一个源存储桶复制到另一目标存储桶。但是我想将文件类型(图像,文档,视频)复制到目标存储桶中的相应文件夹。
一旦新文件击中了源存储桶,也应将它们复制到目标存储桶中的相应文件夹中。
答案 0 :(得分:0)
您的问题有两个主题:
通过创建 Amazon S3事件,可以在创建对象后立即执行操作。该事件可以触发AWS Lambda函数,向Amazon SNS主题发送消息或将消息放入Amazon SQS队列。
对于您的用例,您可以使用 AWS Lambda函数。该功能应:
bucket name
记录中检索对象的Key
和event
HeadObject()
检索有关对象的元数据CopyObject()
命令以根据元数据将对象复制到所需位置有关创建S3对象时触发Lambda函数的示例,请参见:Tutorial: Using AWS Lambda with Amazon S3 - AWS Lambda
答案 1 :(得分:0)
如果您使用的是Windows Powershell:
aws s3 ls s3://bucket-source | ForEach-Object -Process {[System.IO.Path]::GetExtension($_).Split(".")[1]} | ForEach-Object -Process {aws s3 sync s3://bucket-source s3://bucket-destination/$_/ --exclude "*" --include "*.$_" }
说明:
获取源存储桶中的文件列表
aws s3 ls s3:// bucket-source
找到他们的扩展名
ForEach-Object -Process {[System.IO.Path] :: GetExtension($ _)。Split(“。”)[1]}
复制到目标存储桶。它为每个扩展名创建文件夹,并将该类型的文件复制到其中:
ForEach-Object -Process {aws s3 sync s3:// bucket-source s3:// bucket-destination / $ /-排除“ *” --include“ *。$ ”