如何通过API更改S3的Content-Type元数据?

0

【以下的问题经过翻译处理】 这份文档清楚地表明您可以更改对象的元数据。通过控制台可以正常工作。但我无法弄清楚您应该如何通过API完成它。

我有一个之前被问过的问题:CloudFront由S3存储桶提供支持,如果内容类型错误,它会执行错误操作。当我上传一个xyz.js文件时,它将内容标记为“text/plain”。我是通过各种客户端,包括旧版的s3cmd来做到这一点的。我可以在s3cmd命令行上指定类型,但我不特别希望这样做-我正在尝试让其他人更轻松地做到这一点。

我正在尝试进行S3 - Lambda通知,分两步完成:

1.收到S3CreateEvent时,在该bucket / key上执行HeadObjectCommand以获取当前元数据。 2.在该响应中,查看GetObjectCommandOutput.Metadata是否有一个键"content-type"。如果是,是否匹配?如果不匹配,执行CopyObjectCommand,但我设置了ContentType和Metadata:{"content-type":"text/javascript"}

问题在于,我从元数据中从未找到使用键“Content-Type”,“content-type”或“contentType”的现有内容类型。我猜我可以每次都执行CopyObjectCommand,但最好先进行检查,避免任何递归。我不清楚CopyObjectCommand是否会触发另一个通知,但一个测试让我相信它确实会。

对于我来说,如果您上传.js文件,则默认内容类型似乎为text/plain仍然很奇怪。事实上,在s3控制台中,它出现在两个位置:类型:js,以及在元数据中显示“系统生成,内容类型,text/plain”。

如果我使用aws s3 cp junk2.js s3://mybucketname --content-type="text/javascript",它会执行正确的操作。

这个问题在 stackoverflow 上讨论得很多,但它主要只是解决方法。没有明确的答案。

profile picture
EXPERTE
gefragt vor 5 Monaten60 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 您是否尝试查找“ContentType”?请参阅:Interface HeadObjectCommandOutput

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen