【问题标题】:Firebase functions deploy fails with accessdeniedFirebase 函数部署失败并出现访问被拒绝
【发布时间】:2018-06-13 16:46:17
【问题描述】:

使用 firebase-tools v3.18.6,我的帐户中有 3 个不同的项目来模拟 dev/qa/prod 环境。部署到 dev 和 qa 工作正常,但部署到第三个项目失败,并显示以下调试输出(屏蔽可能的敏感信息):

firebase --debug --project=prod deploy --only functions
... lots of debug output ...
[2018-06-13T15:36:07.954Z] <<< HTTP RESPONSE 403 x-guploader-uploadid=AEnB2UoLPpYzpkSxyI2w-TCcJeZX8XvBvId1gEIMX1yoTBLqhEyNTR7whmnMV7z9gyVZ14T6QZj9I4GBXjBm_bj_FWgyc-v6hynRxROPl1sIQh_O1d8UWq0, content-type=application/xml; charset=UTF-8, content-length=297, vary=Origin, date=Wed, 13 Jun 2018 15:36:07 GMT, server=UploadServer, alt-svc=quic=":443"; ma=2592000; v="43,42,41,39,35", connection=close
[2018-06-13T15:36:07.955Z] <<< HTTP RESPONSE BODY <?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message><Details>service-XXXXXXXXXXX@gcf-admin-robot.iam.gserviceaccount.com does not have storage.objects.create access to gcf-upload-us-central1-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX.</Details></Error>

我已经关注the google cloud docs 并确保:

  1. 所有需要的 api 都已启用
  2. 机器人的服务帐号具有 CloudFunctions.ServiceAgent 角色
  3. 我拥有项目的编辑/所有者权限

证明:

$ gcloud services list --project=prod | grep functions
cloudfunctions.googleapis.com        Cloud Functions API
$ gcloud projects get-iam-policy prod | grep -B1 -A1 gcf
- members:
  - serviceAccount:service-XXXXXXXXXXX@gcf-admin-robot.iam.gserviceaccount.com
  role: roles/cloudfunctions.serviceAgent
$ gcloud projects get-iam-policy prod | grep -B1 -A1 jorgeg
- members:
  - user:jorgeg@company.com
  role: roles/owner

在这一点上,我相当确信在我的项目上启用 firebase 函数 api 时内部出现了问题,但想知道在我升级支持级别之前是否有人遇到过同样的问题。

TIA

【问题讨论】:

    标签: firebase google-compute-engine google-cloud-functions


    【解决方案1】:

    我们遇到了同样的问题并通过以下方式解决了它:

    1. 在 gcloud 存储中创建一个名为 foo 的存储桶
    2. 使用该存储桶通过 gcloud beta 部署函数:

    gcloud beta 函数部署 myFunction --trigger-http --stage-bucket foo

    1. 修复了权限,然后常规的 Firebase 部署开始工作

    【讨论】:

    • 你得到了所有的饼干!这完全有效,太棒了!
    【解决方案2】:

    我不记得这是否与我收到的错误消息完全相同,但我想我遇到过类似的事情 - 我知道它与 Cloud Functions 相关。我记得我的与没有权限的服务帐户有关,甚至可能根本不存在。不幸的是,我无法解决它(我懒得联系 Firebase 支持)。

    在我的情况下,我很幸运,它是开发环境,所以没有人关心我是否将它扔掉并重新制作了一个。我导出了我的数据库,删除了有问题的项目,并从一个新的 Firebase 项目开始......并且修复了它。我不确定这是否适合您,因为您说这是您的生产失败,如果其他人会关心您是否垃圾并重新启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 2015-01-05
      • 2012-05-02
      • 2019-10-12
      • 2017-08-08
      • 2020-11-24
      • 2017-05-17
      相关资源
      最近更新 更多