在 Amazon S3 上递归更改给定扩展名的文件的内容类型

Gab*_*man 14 amazon-s3 aws-cli

我有一个带有嵌套“文件夹”结构的大型 S3 存储桶,其中包含(除其他外)静态 .json 和 .md 文件。论文的文件正在由S3担任text/plain,而不是正确的application/jsontext/markdown

我已更新存储桶默认值,以便新上传的内容类型正确。

遍历“树”并更新匹配特定扩展名的文件的内容类型的最佳方法是什么?

小智 31

以下是如何使用 aws cli 工具执行此操作的示例。cp 工具允许使用递归选项,我认为 s3api 工具无法做到这一点。在这种情况下,我正在修复一堆 SVG。当您准备好释放它时,请删除 --dryrun 选项。

aws s3 cp \
      --exclude "*" \
      --include "*.svg" \
      --content-type="image/svg+xml"  \
      --metadata-directive="REPLACE" \
      --recursive \
      --dryrun \
       s3://mybucket/static/ \
       s3://mybucket/static/
Run Code Online (Sandbox Code Playgroud)

  • 该命令重置 acl。如果需要非默认值,请添加“--acl=...” (2认同)

Gab*_*man 5

经过一番挖掘,我发现该s3cmd工具可以做到这一点。例如,要将 JSON 文件设置为 application/json:

s3cmd --recursive modify --acl-public \
       --add-header='content-type':'application/json' \
       --exclude '' --include '.json' \
       s3://bucket/
Run Code Online (Sandbox Code Playgroud)