【发布时间】:2020-06-12 02:22:43
【问题描述】:
我在 Google Cloud 函数中运行了以下 python 代码。
pname = format(os.environ.get('GCP_PROJECT'))
project_metadata_file = "/tmp/" + pname + "_proj_metadata.json"
bucket_name = "XXXX"
H = open(project_metadata_file, "w")
project_list_command = "gcloud projects describe " + pname + " --format json"
project_output = subprocess.check_output(shlex.split(project_list_command))
project_output_json = json.loads(project_output)
H.write(project_output_json)
H.close()
upload_blob(bucket_name, project_metadata_file, os.path.basename(project_metadata_file))
return pname
这是我从 Cloud 函数中得到的错误。您能否告知我如何将 gcloud 作为此云功能的要求。请指教。
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
[Errno 2] No such file or directory: 'gcloud': 'gcloud'
谢谢
【问题讨论】:
-
我怀疑您将很难尝试使用您的代码部署一个完全配置的 gcloud 实例。您可能想考虑直接调用 Google Cloud API。
-
对@doug-stevenson 回答是。请不要这样做!您正在尝试从作为云函数运行的 python 进程生成运行 gcloud 的进程。你应该做的是使用谷歌的云客户端库来获得你需要的功能。这是支持
gcloud projects describe的相关库:pypi.org/project/google-cloud-resource-manager -
感谢 Doug/DazWilkin 的输入。我正在尝试获取项目中定义的项目元数据,例如(键:值)对,但没有看到云资源中提供的任何 API-经理提取此信息。所以我已经使用 gcloud projects describe shell 命令恢复了......我发现提取项目元数据的另一个选项是使用我不想使用的计算引擎 API,因为我没有在我的项目中建立一个计算实例。
-
对不起...没关系..我能够使用方法:projects.get API 由云资源管理器提供,并且能够检索标签...之前使用的是 fetch_project 方法,但不是提供所有信息。再次感谢。
标签: python google-cloud-functions gcloud