我有一个带有嵌套“文件夹”结构的大S3存储桶,其中包含(除其他外)静态.json和.md文件。这些文件由S3提供,text/plain
而不是由正确的application/json
和提供text/markdown
。
我已经更新了存储桶的默认设置,以便新上传的内容具有正确的内容类型。
遍历“树”并更新与特定扩展名匹配的文件的内容类型的最佳方法是什么?
我有一个带有嵌套“文件夹”结构的大S3存储桶,其中包含(除其他外)静态.json和.md文件。这些文件由S3提供,text/plain
而不是由正确的application/json
和提供text/markdown
。
我已经更新了存储桶的默认设置,以便新上传的内容具有正确的内容类型。
遍历“树”并更新与特定扩展名匹配的文件的内容类型的最佳方法是什么?
Answers:
这是一个如何使用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/
--acl=...
经过一番挖掘,我发现该s3cmd
工具可以做到这一点。例如,要将JSON文件设置为application / json:
s3cmd --recursive modify --acl-public \
--add-header='content-type':'application/json' \
--exclude '' --include '.json' \
s3://bucket/
如前所述,您可以使用aws
Amazon的工具,并使用s3api将对象复制到自身上,并用于metadata-directive=REPLACE
更改内容类型。
我将其放在这里,因为有时您会想要遍历存储在数据库中的文件名,而这正是通过cli进行操作的方式。
aws s3api copy-object \
--content-type="application/vnd.android.package-archive" \
--metadata-directive="REPLACE" \
--copy-source "MYBUCKET/FILE.apk" \
--bucket "MYBUCKET" \
--key "FILE.apk" \
--acl public-read