【问题标题】:Google Cloud Functions: error deploying, main.py doesn't existGoogle Cloud Functions:部署错误,main.py 不存在
【发布时间】:2019-06-04 10:06:18
【问题描述】:

从本地系统部署 Google Cloud Functions 失败并出现以下错误:

ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Function load error: File main.py that is expected to define function doesn't exist

我已经使用控制台 UI 检查了在失败的部署中上传的包的内容,并且文件存在。该包是使用gcloud CLI 创建的:

gcloud functions deploy <redacted> \
    --trigger-http \
    --runtime=python37 \
    --region=europe-west1 \
    --project=<redacted> \
    --entry-point=<redacted>

就上下文而言,同一个项目被几个人成功部署了多次,但对于每个在特定日期后签出的新人来说都开始失败。

【问题讨论】:

  • 您是否关注quickstart 以使您的第一个部署工作?请编辑问题以显示您的项目目录的内容,以及您运行 gcloud 的目录。
  • 是的,该项目之前已经部署成功了。

标签: python google-cloud-functions


【解决方案1】:

在我们的例子中,这是因为凭据无效,即传递给 ServiceAccountCredentials.from_json_keyfile_name 的 JSON 文件丢失。令人困惑的是,该错误并未提及任何有关安全性、凭据或丢失文件的内容。

秘密不在版本控制中,并且共享保管库有一个陈旧的文件,该文件与 python 脚本中提供的路径不匹配。更正凭据后,此问题已得到修复。

我们成功地部署了“哑”函数(返回一个字符串),然后逐步添加回功能直到它崩溃,从而成功地将问题隔离到经过身份验证的调用。

【讨论】:

  • 这似乎是 Cloud Functions 的一个错误。我已经在内部提交了一个问题,谢谢!
  • @DustinIngram 谢谢! ?
  • 我在运行main.py 时遇到此错误导致FileNotFound 异常。具体来说,main.py 从settings.py 导入,其中包括with open('foo') as f:,其中'foo' 是一个不再存在的文件。因此,与@AlexCiminian 的情况不同,该异常不是从 Google API 代码中引发的;它是与凭据无关的标准库 Python。对于@DustinIngram:SDK 251.0.0,测试版 2019.05.17。
【解决方案2】:

我在 Node.js 中的应用程序中解决了这个问题,基本上我发现 .gcloudignore 文件调用了项目的 .gitignore,所以如果你的函数在跳过的文件夹中,它根本找不到,然后只需删除行#! Include : .gitignore 文件.gcloudignore

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 2019-10-06
    • 2020-11-03
    • 2021-03-05
    • 2018-05-18
    • 2019-04-11
    • 2021-03-09
    • 2017-08-20
    相关资源
    最近更新 更多