如何从 Cloud Storage 存储桶提供 App Engine 网站的 /static/ 目录内容?
Posted
技术标签:
【中文标题】如何从 Cloud Storage 存储桶提供 App Engine 网站的 /static/ 目录内容?【英文标题】:How to serve an App Engine website's /static/ directory content from Cloud Storage bucket? 【发布时间】:2019-01-25 21:28:36 【问题描述】:我想在 GCP 上运行 Node.js 应用,同时只将脚本上传到 App Engine。 所有静态文件都将放在 Cloud Storage 的存储桶中,以便于操作。 当应用程序在https://netwell.digital 上运行时,所有静态文件都可以在https://netwell.digital/static/ 中找到。
到目前为止,我在这方面发现了相互矛盾的信息,而谷歌云平台本身仅能达到:
您现在可以通过https://storage.googleapis.com//static/access your static assets...
有没有办法将存储桶映射为 App Engine 应用程序的 /static/ 目录?
【问题讨论】:
为什么不直接使用图片的bucket url呢?还是查表,所以当页面请求https://sparkx.online/static/...
时,换成bucket url?
直接指向存储桶 url 是我能想到的链接到存储桶内的静态资源的最麻烦和最不优雅的方式。为每个页面和 css 中的每个资源重复完整的绝对 https://storage.googleapis.com/..
是非常讨厌的。在服务器端用存储桶 URL 替换占位符字符串同样不合理,而且它不能用存储桶内的 CSS 和脚本等文件来完成,而在客户端这样做是完全不行的。我无法想象没有办法将存储桶映射为 App Engine 应用的目录。
更新:进行类似操作的一种方法是在域上创建一个 CNAME 记录,以将“static.netwell.digital”之类的某些内容指向“storage.googleapis.com”,以便能够访问static.netwell.digital/使用Cloud Storage bucket to host a static website 可以实现您想要的功能。但是您必须选择从 App Engine 或存储桶中为您的网站提供服务。当您找到 serving static file 文档时,这是您访问的方式,它似乎不可能是您想要的样子。
【讨论】:
是的,我知道这一切。你实际上是在总结我的问题。 :) 我简直不敢相信有些事情,比如静态资源的基本管理和部署会变得如此复杂。我期待 GCP 能让我的生活更轻松,但在这一点上,管理自己的服务器似乎是更好的选择,原因有很多。以上是关于如何从 Cloud Storage 存储桶提供 App Engine 网站的 /static/ 目录内容?的主要内容,如果未能解决你的问题,请参考以下文章
如何将文件从加密的 S3 存储桶复制到 Google Cloud Storage?
存储桶文件更改后,如何清除静态 Cloud Storage 网站上的缓存?
将文件从 S3 存储桶复制到 Google Cloud Storage
如何使用 gsutil 将所有文件和子文件夹从当前目录复制/移动到 Google Cloud Storage 存储桶
从 Google Cloud Function (Python) 将新文件写入 Google Cloud Storage 存储桶
如何更改 Google Compute Engine 服务帐户的范围以将数据写入 Google Cloud Storage 存储桶?