尽管明确设置了无限TTL,但Google云存储仍为请求的资产设置了到期日期 [英] Google Cloud Storage setting an expiry date on requested assets despite explicitly setting infinite TTL

本文介绍了尽管明确设置了无限TTL,但Google云存储仍为请求的资产设置了到期日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个运行在Google Cloud服务上的rails5.2.3应用程序,我有一些用户上传的图像,例如员工图像。这些图像将上载到GC存储存储桶集,以供公众访问。

我目前的问题是,我试图在我们发送的电子邮件中显示这些图像。在电子邮件视图中,图像的名称如下所示。请注意,保证员工有图像,我们强制用户上载员工照片,因此不存在其中一张照片不存在的风险。

<%= image_tag (employee.photo.service_url) if employee.photo.attached? %>
现在,图像实际上在电子邮件中显示得很好...5分钟后,图像将不再可访问,通过电子邮件中的链接访问图像会将我们带到文件不再存在的404。在仔细查看图像URL后,我注意到一个参数Expires=,后跟一个Unix时间戳,转换为电子邮件发送后恰好5分钟。我搜索了我们的Google Cloud设置的每一寸,但几乎没有看到任何关于TTL或Expires或任何东西的东西。

这是URL的图像,因为它很长。我已经编辑了一些项目ID之类的内容,这些都不相关

我认为问题是我没有访问存储桶中图片的公共URL,而是永久性的,就像他们在文档中说的那样,你必须使用BUCKET_NAME/FILE_NAMEURL来调用图片,但我不能使用这个,因为图片上传后会有随机的文件名,而且这种方法也不是非常动态的,因为我们将这些电子邮件发送给每个客户端,每个客户端都有自己独特的员工和员工图片。

这是存储存储桶的屏幕截图。正如您所看到的,一切都是公开的,手动检查图像时,我确实看到了我在测试期间看到的一些员工图像。

任何能为我指明正确方向的东西都将不胜感激。

我的storage.yml文件

google:
  service: GCS
  project: REDACTED
  credentials: <%= Rails.application.credentials.gcs_storage_credentials.to_json %>
  bucket: images-REDACTED

我的production.rb环境文件

config.active_storage.service = :google
config.action_mailer.asset_host = Rails.application.credentials.send(production_server_url)

我的Gemfile

ruby '2.6.3'
gem 'rails', '~> 5.2.3'
gem 'pg', '>= 0.18', '< 2.0'
gem 'active_storage_base64'
gem 'google-cloud-storage', '~> 1.8', require: false

推荐答案

查看您附加的URL,似乎使用了signed URL

如果我的猜测正确,您可以在参数上指定Expires。

有关如何指定Expire参数的详细信息,请参阅here

它描述了样例Python代码,但您可以根据自己的情况对其进行修改。

下面是示例代码的一部分,我认为这就是您想要的。

if query_parameters is None:
    query_parameters = dict()
query_parameters['X-Goog-Algorithm'] = 'GOOG4-RSA-SHA256'
query_parameters['X-Goog-Credential'] = credential
query_parameters['X-Goog-Date'] = request_timestamp
query_parameters['X-Goog-Expires'] = expiration
query_parameters['X-Goog-SignedHeaders'] = signed_headers
if subresource:
    query_parameters[subresource] = ''

这篇关于尽管明确设置了无限TTL,但Google云存储仍为请求的资产设置了到期日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆