Amazon S3上的自定义标头

时间:2012-01-18 20:27:47

标签: header amazon-s3 amazon

是否可以在Amazon S3上使用任意命名自定义标头?

例如,我使用指向Amazon S3的CDN作为源服务器,并且为了在CDN上启用高级功能,我需要使用自定义标头“x-something-something”......

我认为用“x-amz-meta-(某事)”可以做到这一点但是如果没有amz那么更像“x-(某事) - (某事)”这样的东西怎么办呢?

Amazon S3 custom headers

3 个答案:

答案 0 :(得分:14)

我认为current API不可能。它们涵盖了缓存和浏览器互操作性所需的主要标题。

我认为他们在允许x-amz-meta-前缀自定义标头时是安全的,可能会在将来更新其api时不与用户选择的标头发生冲突。

如果您需要附加到对象的自定义属性,则在客户端应用程序中解析x-amz-meta-应该是微不足道的。

答案 1 :(得分:11)

这篇精美的文章解释了这一切 https://medium.com/@tom.cook/edge-lambda-cloudfront-custom-headers-3d134a2c18a2

tldr:

你不能只用s3做。您需要通过 Lambda @ Edge 使用Cloudfront和lambda。它是Lambda和CloudFront之间的集成。它允许您在CloudFront中运行Lambdas。这允许您更改标题等。因此,如果您可以通过CloudFront访问您的s3,那么这可能是一个可行的选择。

答案 2 :(得分:0)

我能够使用s3cmd tool实现这一目标。我编写了一个同步脚本,它使用AWS客户端工具上的--cache-control参数同步我的静态站点,然后手动重置它并为一些特定文件添加一些其他标题:

  

cd / appropriatedirectory

     

#删除当前站点
  aws s3 rm s3:// yourbucket --recursive --exclude'logs / *'

     

#上传新网站,为所有文件设置缓存标头为1个月   aws s3同步。 s3:// yourbucket --exclude'.idea / *'--exclude'.git / *' - exclude'.gitignore'-- cache-control max-age = 2592000

     

#覆盖某些文件的缓存头   python / pathToS3cmd / s3cmd modify --add-header =“Cache-Control:no-cache,no-store,must-revalidate”s3://yourbucket/somefile.html
  python / pathToS3cmd / s3cmd / s3cmd modify --add-header =“Expires:0”s3://yourbucket/somefile.html
  python / pathToS3cmd / s3cmd / s3cmd modify --add-header =“Pragma:no-cache”s3://yourbucket/somefile.html