Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何在AmazonS3中为bucket中的所有图像设置expires头_Amazon S3_Expires Header - Fatal编程技术网

Amazon s3 如何在AmazonS3中为bucket中的所有图像设置expires头

Amazon s3 如何在AmazonS3中为bucket中的所有图像设置expires头,amazon-s3,expires-header,Amazon S3,Expires Header,在Amazon S3中,一个存储桶中有大约10000多个图像,如何一次性设置所有图像的expires头?非常确定,不可能在一个请求中完成此操作。相反,您必须发出10000个请求,每个键一个请求,新的头/元数据以及指向同一键的x-amz-copy-source头(这样您就不需要重新上传对象)。我提供的链接更详细地介绍了PUT-copy操作,但这几乎是在s3上更改对象元数据的方法。另一种解决方案是在URL中添加response-expires参数。它设置响应的Expires标题 有关更多详细信息,请

在Amazon S3中,一个存储桶中有大约10000多个图像,如何一次性设置所有图像的expires头?

非常确定,不可能在一个请求中完成此操作。相反,您必须发出10000个请求,每个键一个请求,新的头/元数据以及指向同一键的
x-amz-copy-source
头(这样您就不需要重新上传对象)。我提供的链接更详细地介绍了PUT-copy操作,但这几乎是在s3上更改对象元数据的方法。

另一种解决方案是在URL中添加
response-expires
参数。它设置响应的
Expires
标题


有关更多详细信息,请参阅中的“请求参数”部分。

您可以使用使用S3API的第三方应用程序对bucket文件进行批量更改。这些应用程序不会只使用一个请求设置标题,而是会自动处理10000多个请求

我目前使用的是,这是一个与S3 bucket交互的免费实用程序。在这个工具中,我可以选择多个文件并指定将应用于所有文件的HTTP头


另一种方法是使用S3 API库开发自己的脚本或工具。

我发现了一个使用AWS CLI的很好的解决方案:

aws s3 cp s3://bucketname/optional_path s3://bucketname/optional_path --recursive  --acl public-read  --metadata-directive REPLACE --cache-control max-age=2592000

这将设置缓存控制30天。请注意,您可以选择复制或替换以前的标题数据。由于AWS将自动为每种媒体类型包含正确的元内容类型数据,并且我有一些不好的标题,所以我选择覆盖所有内容

Cyberduck也将编辑标题

  • 选择所有项目
  • 命令&i(获取信息)
  • 提供一个GUI,用于编辑内置预设的各种标题
  • 在一个桶中处理了6000张图像,没有任何问题

  • 选择文件夹
  • 从顶部菜单,更多
  • 选择“更改元数据”
  • 在密钥过期时添加密钥
  • 将值添加为2592000(例如)

  • 奇怪的是,我没有配置凭据,但它没有抛出任何错误,只是打印出所有的图像名称@MauvisLedford@Rollo在
    cp
    之后,需要重复两次路径,因为它们是源路径和源路径destination@ericn我知道已经很晚了,但你是否可以公开访问你的图像?如果我们设置了
    缓存控制
    ,我们需要过期吗?即使存在缓存控制,pingdom和gtmetrix等服务似乎也会在缺少过期信息时犹豫不决。请注意,这不会合并现有元数据。不幸的是,没有--metadata指令合并选项:(根据RFC,整数值是不允许的。@Arun,这是S3中的吗?我想UI已经改变了,因为没有“更多”在顶部菜单中。@YukiMatsukura如何在S3中添加一个特定的日期,它的工作原理类似于Apache的
    access+1 year
    ?如果我们手动设置年份等,我们将不得不不断手动编辑Expires标头!但没有递归选项