【发布时间】:2018-10-09 10:14:16
【问题描述】:
我们创建了两个微服务,一个从 node.js 将图像上传到 Google 存储(存储桶)。以及从 python 服务返回 serving_url 的服务。两种服务都有效。差不多……
我们的问题是,如果桶中的文件没有正确的ACL,我们就不能从图片服务中获取serving_url()。
我们正在使用 node.js 文件服务中生成的可恢复上传链接从前端上传图片:
createResumeableUpload: async (filename, metadata) => {
const file = await bucket.file(filename);
const upload = await file.createResumableUpload({
metadata,
public: true,
});
return upload;
},
检查存储桶中的文件后,我们确实获得了所有具有读取权限的用户,请参见下图。但是由于权限无效,对图像服务的转换会抛出异常。
但是如果我们直接在bucket界面上传图片,我们会获得更多的权限,经过一番测试,我们发现下面的权限就是我们要找的就是editers,列表中的第二位:
我们已经尝试了很多,无论是在创建可恢复上传时设置 ACL 还是在创建文件后设置 ACL,但没有任何效果。如果有人能帮助我们如何在文件上设置正确的 ACL,我们将不胜感激,以便我们能够从图像服务中获取 serving_url()。
[编辑] 回答一些问题。我们 100% 确定这是一个权限问题,如果我们添加编辑者的权限,图像服务可以正常工作,但我们需要能够在将图像添加到存储桶时添加此权限。这是我的问题:
当我们从 node.js 服务将图像上传到存储桶时,我们如何为编辑者添加所有者权限?
【问题讨论】:
-
您能否澄清一下:1)这两个服务是否位于同一个项目中? 2) 哪个服务在进行转换? 3)您能否发布错误消息并解释问题发生在哪个特定步骤? 4) 你在使用 Python API 图像服务吗?如果不是,那绝对值得一看。
-
1.不仅图像服务在应用引擎上运行。 2. 影像服务正在做转换 3. 我觉得这不重要,我们已经把它钉在了许可上。 4. 是的,因为我写的是python服务,如果不够清楚,抱歉
标签: google-app-engine google-cloud-storage