我在Google AppEngine
上托管了一个使用快速静态中间件的快速应用。我想将静态文件存储在google-cloud-storage
上,并且无需太多修改即可从常规文件系统切换到google-cloud-storage
。
我在考虑编写一个中间件:
google-cloud-storage
网址)。有更简单/更清洁的方法吗?
答案 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
还没有测试过,但是看起来像答案