Google app engine 在google存储上设置正确的ACL
我们已经创建了两个微服务,其中一个将图像从node.js上传到谷歌存储(bucket)。以及从python服务返回服务url的服务。这两项服务都有效。几乎 我们的问题是,如果bucket中的文件没有正确的ACL,则不允许从映像服务获取服务的url() 我们正在使用node.js文件服务中生成的可恢复上传链接从前端上传图像:Google app engine 在google存储上设置正确的ACL,google-app-engine,google-cloud-storage,Google App Engine,Google Cloud Storage,我们已经创建了两个微服务,其中一个将图像从node.js上传到谷歌存储(bucket)。以及从python服务返回服务url的服务。这两项服务都有效。几乎 我们的问题是,如果bucket中的文件没有正确的ACL,则不允许从映像服务获取服务的url() 我们正在使用node.js文件服务中生成的可恢复上传链接从前端上传图像: createResumeableUpload: async (filename, metadata) => { const file = awa
createResumeableUpload: async (filename, metadata) => {
const file = await bucket.file(filename);
const upload = await file.createResumableUpload({
metadata,
public: true,
});
return upload;
},
在检查了bucket中的文件之后,我们确实获得了具有读卡器权限的Alluser,请参见下图。但是,由于权限无效,映像服务上的转换将引发异常
但是,如果我们直接在bucket界面上传图像,我们会获得更多的权限,经过一些测试,我们发现下面的权限是我们正在寻找的编辑器,在列表中的第二个:
我们在创建可恢复上传时设置ACL,或者在创建后在文件上设置ACL,都做了很多尝试,但都没有效果。如果有人能帮助我们在文件上设置正确的ACL,我们将不胜感激,这样我们就可以从图像服务中获得服务的url()
[编辑]
回答一些问题。我们100%确定这是一个权限问题,如果我们添加编辑权限,图像服务可以正常工作,但我们需要能够在向bucket添加图像时添加此权限。这是我的问题:
当我们从node.js服务将图像上载到存储桶时,如何向编辑器添加所有者权限?为了添加必要的权限,您可以使用定义对象希望拥有的所有ACL的JSON向发送请求 更新:
已代表您创建功能请求,以使此功能可用于NodeJS客户端库。请启动它,以便您可以接收有关此功能请求的更新,并且毫不犹豫地添加其他注释以提供所需实现的详细信息。您可以通过以下方式跟踪功能请求。在数小时尝试figure Google ACL系统后,我想与大家分享我是如何从NodeJ设置ACL的 图像文件上载到bucket后,需要添加项目所有者ACL。如果此映像文件没有项目所有者ACL,则在生成服务url()时将引发异常 要更新ACL,我使用了此函数:
updateAcl: async (name: string) => {
const file = await bucket.file(name);
console.log('file', file);
const acl = await file.acl.add({
role: 'OWNER',
entity: 'project-editors-231929353801'
});
return acl;
}
从存储面板,可以获得所有默认ACL的列表。Images API使用(您的项目_ID@appspot.gserviceaccount.com). 只要您在bucket上授予此服务帐户Storage Object Admin角色,它就不需要是项目所有者才能工作。或者,您可以更新向服务帐户授予对象所有者的对象ACL。您能否澄清:1)这两个服务是否位于同一个项目中?2) 哪个服务正在进行转换?3) 您能否发布错误消息并解释问题发生在哪个特定步骤?4) 您正在使用Python API映像服务吗?如果你不是,那绝对值得一看。不,只有图像服务在应用程序引擎上运行。2.镜像服务正在进行转换3。我认为这不重要,我们已经把它确定为许可。4.是的,正如我所写的,这是一个python服务,如果这还不清楚的话,很抱歉,我们更愿意使用node.js集成,甚至在我们创建可恢复下载链接时能够做到更多。这是可能的,还是我们必须自己包装功能?@DNRN请查看更新的答案。现在你必须自己包装它,但是已经创建了一个功能请求。谢谢你的帮助。我们需要获取API调用的承载令牌。从文档中:我们已经启动了环境(将其用于桶处理)。我们如何从GCS获得令牌?@DNRN有关OAuth令牌的问题,请查看此文档-。如果您需要进一步的帮助,应该打开一个单独的问题帖子。发现此处描述的解决方案非常清楚: