Jea*_*ant 4 google-app-engine node.js express google-cloud-storage
我有一个在谷歌上托管的 Express 应用程序AppEngine,它使用 Express 静态中间件。我想将静态文件存储在 上google-cloud-storage,并且能够从常规文件系统切换到google-cloud-storage无需太多修改。
我正在考虑编写一个中间件:
google-cloud-storageurl)。有没有更简单/更干净的方法来做到这一点?
我使用 http-proxy-middleware 完成了这项工作。本质上,由于 GCS 文件可以通过 http 协议访问,这就是我们所需要的。
理想情况下,文件可以直接从 GCS 本身提供服务,方法是将存储桶公开并使其 URL 类似于https://storage.googleapis.com/<bucket-name>/file. 但我的要求是需要从与我的应用程序相同的域提供文件,但这些文件不是应用程序本身的一部分(它们是单独生成的)。因此,我必须将其实现为代理。
import proxy from 'http-proxy-middleware';
...
app.use('/public', proxy({
target: `https://storage.googleapis.com/${process.env.GOOGLE_CLOUD_PROJECT}.appspot.com`,
changeOrigin: true,
}));
Run Code Online (Sandbox Code Playgroud)
请注意,基于项目 ID 的存储桶是由 GAE 自动创建的,但需要授予公共访问权限。这可以通过以下方式完成
gsutil defacl set public-read gs://${GOOGLE_CLOUD_PROJECT}.appspot.com
Run Code Online (Sandbox Code Playgroud)
设置代理后,所有对https://example.com/public/ * 的请求都将从存储桶中提供<GOOGLE_CLOUD_PROJECT>.appspot.com/public/*。
| 归档时间: |
|
| 查看次数: |
3621 次 |
| 最近记录: |