Amazon-S3

遞歸更改 Amazon S3 上給定副檔名的文件的內容類型

  • July 7, 2021

我有一個帶有嵌套“文件夾”結構的大型 S3 儲存桶,其中包含(除其他外)靜態 .json 和 .md 文件。這些文件由 S3 提供,text/plain而不是正確的application/jsontext/markdown.

我已更新儲存桶預設值,以便新上傳的內容類型正確。

遍歷“樹”並更新與特定副檔名匹配的文件的內容類型的最佳方法是什麼?

以下是如何使用 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/

經過一番探勘,我發現該s3cmd工具可以做到這一點。例如,要將 JSON 文件設置為 application/json:

s3cmd --recursive modify --acl-public \
      --add-header='content-type':'application/json' \
      --exclude '' --include '.json' \
      s3://bucket/

引用自:https://serverfault.com/questions/725562