【问题标题】:Error on google function deploy, service account doesn't exist谷歌功能部署错误,服务帐户不存在
【发布时间】:2019-07-21 14:10:24
【问题描述】:

请您帮帮我,我在尝试部署谷歌云功能时收到此错误:

HTTP Error: 400, Default service account 'project-name@appspot.gserviceaccount.com' doesn't exist. Please recreate this account (for example by disabling and enabling the Cloud Functions API), or specify a different account.

用于部署的命令是:

firebase deploy --only functions

临时解决方案很好,但如果你能帮我永久解决它更好。

提前致谢。

【问题讨论】:

  • 消息显示“禁用和启用云功能 API”。您是否尝试过进行网络搜索以查看是否有相关文档?
  • @DougStevenson 我尝试禁用和重新启用云功能 API 无济于事。我禁用了我的服务帐户,因为凭据被泄露,我在下面看到的唯一解决方案是取消删除我受损的凭据。如何“指定不同的帐户”?

标签: google-cloud-functions


【解决方案1】:

就我而言,App Engine 默认服务帐户已被删除。它看起来像这样:{project_id}@appspot.gserviceaccount.com

所以我不得不像这样恢复服务帐户:

您现在可以从 https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/undelete 恢复已删除的服务帐户

您必须从https://console.cloud.google.com/home/activity获取服务帐户的唯一ID

来源:https://stackoverflow.com/a/55277567/888881

API 浏览器是使用 IAM API 的简单方法:https://developers.google.com/apis-explorer/#p/

【讨论】:

  • 我删除了我的默认服务帐户,因为凭据被无意中张贴在公共场所。我不想取消删除密钥,而是创建一个新的安全密钥。知道怎么做吗?
【解决方案2】:

我一直在努力解决这个问题,然后我向 Google 提出了一个案例。

这是我学习的详细文章: https://medium.com/@ashirazee/http-error-400-default-service-account-appspot-gserviceaccount-com-accd178ea32a

首先导航到 Google Cloud Platform 并查看您的服务帐户。

尝试在您的 firebase 项目的服务帐户列表中找到 @appspot.gserviceaccount.com',它已链接到 App Engine。

如果 '@appspot.gserviceaccount.com' 丢失,您将无法部署任何东西(请参阅下面的 GOOGLE 电子邮件),如果没有,请检查它是否已启用,尝试禁用它并再次启用它。

@appspot.gserviceaccount.com 是默认预安装的,无论是否付费。尝试回想一下您是否在部署之后或之前删除了它。

现在,如果您出于任何原因将其删除超过 30 天,那么您将无法检索它,您必须创建一个新的 firebase 项目。但是,如果在 30 天内,您可以取消删除它。

来自谷歌的电子邮件:

电子邮件 #1 " 你好阿里

我正在查看你项目的日志,不幸的是服务账号在 Ma 上被删除了,没有机会恢复也没有重新创建它

唯一可用的解决方法是创建一个新项目并在那里部署所需的服务。我知道这对你来说可能不是最好的选择,但这是设计的方式。

如果您有更多问题,请随时回信。

干杯,”

电子邮件 #2,

“你好阿里

很高兴得知您已经能够成功部署您的功能,不幸的是,服务帐户在被删除 30 天后无法恢复,这是唯一的解决方案。如果您还有其他问题,请通过我们的支持渠道再次与我们联系,让我们知道。

干杯,”


最后,这是一个有用的命令行,可以帮助您调试它,但是,如果没有服务帐户,它将无济于事,它只会突出显示显而易见的:

firebase 部署 --only 功能 --debug

这是我的错误:

“HTTP 错误:400,默认服务帐户 '@appspot.gserviceaccount.com' 不存在。请重新创建此帐户(例如通过禁用和启用 Clo ud Functions API),或指定其他帐户。”

【讨论】:

    【解决方案3】:

    如前所述,遗憾的是,您需要使用默认服务帐户。

    如果在 30 天内,您可以使用本教程查找和取消删除服务 acc:阅读本指南以获取 https://cloud.google.com/iam/docs/creating-managing-service-accounts#undeleting_a_service_account

    您必须通过 Google Cloud Console 输入命令(其中一个按钮将打开顶部蓝色应用栏右侧的终端)

    【讨论】:

    • 感谢@ForestG 这真的挽救了一天,半夜醒来发现一个问题只是发现其中一名团队成员不小心删除了该帐户并且未能进行相同的沟通。
    【解决方案4】:

    根据错误消息,您可以通过控制台访问此url 并启用 API 来启用 API。

    或者通过 gcloud 命令:

    gcloud services --project <project_id> enable cloudfunctions.googleapis.com
    

    【讨论】:

      【解决方案5】:

      尝试在 Firebase 的设置中选择 Google Cloud Platform (GCP) 资源位置enter image description here

      【讨论】:

      • 这是不可能的。选择后无法更改。
      • 对不起,我写的是 change 而不是 select,谢谢指正,我遇到了同样的问题,因为我没有选择 GCP,
      • 我仍然不明白您建议的解决方案。
      • **谷歌功能部署出错,服务账户不存在**我遇到了这个问题,因为我没有在设置中选择谷歌云平台(GCP)资源位置,
      猜你喜欢
      • 2017-11-19
      • 2018-09-14
      • 2021-09-15
      • 2013-04-18
      • 2018-09-22
      • 2019-08-30
      • 2017-07-18
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多