根据文件名模式将 S3 存储桶中的文件移动到文件夹

use*_*435 0 amazon-s3 aws-cli

我有一个包含几千个文件的 S3 存储桶,其中文件名始终与模式 {hostname}.{contenttype}.{yyyyMMddHH}.zip 匹配。我想创建一个每天运行一次的脚本,根据文件名中的年份和月份将这些文件移动到文件夹中。

如果我尝试以下 aws-cli 命令

aws s3 mv s3://mybucket/*.202001* s3://mybucket/202001/
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

fatal error: An error occurred (404) when calling the HeadObject operation: Key "*.202001*" does not exist
Run Code Online (Sandbox Code Playgroud)

是否有 aws-cli 命令可以按计划运行以实现此目的?

小智 5

我认为前进的道路是通过S3 CLI 命令中使用--filter 参数

所以,对于你的情况,

aws s3 mv s3://mybucket/ s3://mybucket/202001/ --recursive --exclude "*" --include "*.202001*"
Run Code Online (Sandbox Code Playgroud)

应该可以解决问题。

为了安排 CLI 命令每天运行,我想你可以参考On AWS, run an AWS CLI command daily