Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 在google存储上设置正确的ACL_Google App Engine_Google Cloud Storage - Fatal编程技术网

Google app engine 在google存储上设置正确的ACL

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

我们已经创建了两个微服务,其中一个将图像从node.js上传到谷歌存储(bucket)。以及从python服务返回服务url的服务。这两项服务都有效。几乎

我们的问题是,如果bucket中的文件没有正确的ACL,则不允许从映像服务获取服务的url()

我们正在使用node.js文件服务中生成的可恢复上传链接从前端上传图像:

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令牌的问题,请查看此文档-。如果您需要进一步的帮助,应该打开一个单独的问题帖子。发现此处描述的解决方案非常清楚: