Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 cloud platform 谷歌云存储在成功上传后删除实体/用户_Google Cloud Platform_Google Cloud Storage_Firebase Storage_Google Cloud Node - Fatal编程技术网

Google cloud platform 谷歌云存储在成功上传后删除实体/用户

Google cloud platform 谷歌云存储在成功上传后删除实体/用户,google-cloud-platform,google-cloud-storage,firebase-storage,google-cloud-node,Google Cloud Platform,Google Cloud Storage,Firebase Storage,Google Cloud Node,我已经开发了几个星期的Express/Firebase应用程序。在我遇到以下问题之前,一切都很顺利: TypeError:firebase.storage不是一个函数 快速的搜索使我找到了他。因此,使用这里收集的解决方案,我成功地配置了@googlecloud/storage。但后来,我遇到了: 调用方没有对bucket example.appspot.com的storage.objects.create访问权限 在更多的谷歌搜索之后,我了解到我必须手动将我的firebase管理员用户添加到上的

我已经开发了几个星期的Express/Firebase应用程序。在我遇到以下问题之前,一切都很顺利:

TypeError:firebase.storage不是一个函数

快速的搜索使我找到了他。因此,使用这里收集的解决方案,我成功地配置了
@googlecloud/storage
。但后来,我遇到了:

调用方没有对bucket example.appspot.com的storage.objects.create访问权限

在更多的谷歌搜索之后,我了解到我必须手动将我的firebase管理员用户添加到上的
example.appspot.com
bucket中

完成后,我将测试以下各项:

bucket.upload('./package.json')
  .then((file) => {
    console.log(file)
  })
  .catch((error) => {
    console.log(error)
  })
这很好用。当我停止Express应用程序并重新运行它以尝试再次进行上载时,问题就会出现,这会再次导致
调用方没有…
错误。检查bucket权限,我看到我之前添加的用户现在已经不在了:


我不知道我是否遗漏了什么,比如
@googlecloud/storage
包中的一个bug,或者其他地方的bug。有什么想法吗?

GCS认为每次上传都是一个全新的对象。如果对象作为现有对象共享名称,则先前存在的对象将被删除,新对象属性(包括ACL)将与旧对象没有关系

你可以用几种方法解决这个问题。最简单的方法是将firebase存储添加到bucket的“默认对象ACL”,这将导致所有新创建的对象都具有包含该服务帐户的ACL,除非另有指定。在命令行中,如果安装了gcloud SDK,可以这样做:

gsutil defacl ch -u firebase-storage@system.gserviceaccount.com:O gs://bucketname
另一个选项是显式地将ACL设置为上载的一部分或之后立即设置