通过快速中间件从google-cloud-storage提供静态文件

时间:2016-11-28 16:58:26

标签: node.js google-app-engine express google-cloud-storage connect

我在Google AppEngine上托管了一个使用快速静态中间件的快速应用。我想将静态文件存储在google-cloud-storage上,并且无需太多修改即可从常规文件系统切换到google-cloud-storage

我在考虑编写一个中间件:

有更简单/更清洁的方法吗?

3 个答案:

答案 0 :(得分:0)

您也可以使用像s3-proxy这样的s3 express中间件。通过遵循'简单'移动s3 client application to google cloud storage的迁移步骤您应该能够为中间件派生必要的配置参数。关键步骤是产生一些“访问权限”。并且'秘密' developer keys

答案 1 :(得分:0)

我使用http-proxy-middleware进行了这项工作。本质上,由于可以通过http协议访问GCS文件,所以这就是我们所需要的。

理想情况下,可以通过将存储桶公开并使其URL像import proxy from 'http-proxy-middleware'; ... app.use('/public', proxy({ target: `https://storage.googleapis.com/${process.env.GOOGLE_CLOUD_PROJECT}.appspot.com`, changeOrigin: true, })); 一样直接从GCS本身提供文件。但是我的要求是文件需要与我的应用程序来自相同的域,但是文件不是应用程序本身的一部分(它们是单独生成的)。因此,我必须将其实现为代理。

gsutil defacl set public-read gs://${GOOGLE_CLOUD_PROJECT}.appspot.com

请注意,基于项目ID的存储区是由GAE自动创建的,但需要对其进行公共访问。可以通过

<GOOGLE_CLOUD_PROJECT>.appspot.com/public/*

设置代理后,对https://example.com/public/ *的所有请求都将从存储桶<forms:button name="btnUploadSuccess" text=<fmt:message key="SUCCESS_BUTTON_TEXT"/>/>中得到满足。

答案 2 :(得分:-1)

我需要相同的内容,并遇到google cloud node上使用的示例,或在另一个问题中看到example

将文件内容的读取流放入响应中。 设置文件名和内容类型

enum

还没有测试过,但是看起来像答案