Firebase 存储:以编程方式从 /tmp/ 中删除文件

杜海姆

我搞砸了一个 Firebase 云函数,并意外地创建了 190 万张存储在gs://myapp.appspot.com//tmp/. 那个双斜杠是准确的——服务器正在写入/tmp/,我猜这会导致上面提到的路径。

我现在想删除那些文件(它们都是废话)。我尝试使用 Python 包装器,如下所示:

export GOOGLE_APPLICATION_CREDENTIALS="../secrets/service-account.json"

然后:

from google.cloud import storage

storage_client = storage.Client()
bucket = storage_client.get_bucket('tmp')
blobs = bucket.list_blobs(bucket='tmp', prefix='')
for blob in blobs:
  print(' * deleting', blob)
  blob.delete()

但这会抛出:

google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/storage/v1/b/tmp?projection=noAcl: [email protected] does not have storage.buckets.get access to tmp.

有谁知道如何允许管理员凭据从中删除/tmp/任何指针都会非常有帮助!

维图

我能够使用 gsutil 命令重现这个问题:

gsutil cp ~/<example-file> gs://<my-project-name>.appspot.com//tmp/

首先,在我的Firebase 控制台中,我可以通过一个勾号(整个文件夹)来完成,不确定您是否考虑过这一点。

无论如何,如果你想用 API 完成它,我找到了以下解决方案。

  1. 我认为(与我的测试相比)存储桶名称应该是: myapp.appspot.com
  2. 如果你在 python 中打印 blob,你会得到这样的东西:<Blob: <my-project-name>.appspot.com, /tmp/<example-file>, 1584700014023619>

第二个值是 blob 对象的名称属性。我注意到在这种情况下它的 blob 名称以/tmp/

在我这边工作的代码是:

from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.get_bucket('myapp.appspot.com')
blobs = bucket.list_blobs()
for blob in blobs:
        if blob.name.startswith('/tmp/'):
                print(' * deleting', blob)
                blob.delete()

我不认为它是非常优雅的解决方案,但一次性修复可能已经足够了。

我希望它会有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

您可以以编程方式在 Firebase 存储中“创建新的下载 URL”吗?

如何以编程方式生成到Firebase中存储对象的动态链接?

使用URL从Firebase存储中删除文件

/ tmp中的文件何时删除?

有没有办法以编程方式为 Firebase 中的自定义存储桶设置安全规则?

从Flutter中的Firebase云存储中删除文件夹

删除tmp文件

Firebase存储允许删除文件

如何从firebase存储中删除整个文件-flutter

从Firebase存储中删除文件会导致崩溃

从Firebase存储中删除包含内容的文件夹

如何删除Firebase存储目录中的所有文件

如何从Firebase存储中删除文件夹?

Firebase 存储中的文件夹没有被删除?

如何删除 Firebase 存储中以“foo”开头的所有文件

如何使用 Flutter 从 Firebase 存储中删除文件夹

无法访问/ tmp中的删除文件

以编程方式获取git中的存储数量

将文件存储在heroku Rails上的目录tmp中

图像在 Laravel 中存储为 .tmp

使用Node.js以编程方式删除Firebase用户

Firebase崩溃:如何以编程方式上传映射文件?

我需要保护我的 firebase 服务器密钥吗?我可以将它存储在源代码中还是有办法以编程方式获取它?

删除 firebase 存储中的用户配置文件删除所有内容

如何使用Firebase管理员SDK删除Firebase存储中的文件

删除Nexus tmp文件夹中的文件是否安全?

以编程方式激活Firebase Cloud功能中的重试

如何在Firebase中以编程方式创建Cron作业

如何以编程方式从 Firebase 中获取应用的崩溃率?