【问题标题】:How to create a function that runs a gcloud command?如何创建运行 gcloud 命令的函数?
【发布时间】:2021-03-22 12:51:59
【问题描述】:

我在 Compute Engine 中使用以下命令来运行存储在 Cloud Storage 中的脚本:

gsutil cat gs://project/folder/script.sh | sh

我想创建一个运行此命令的函数并最终安排运行此函数,但我不知道如何执行此操作。有人知道怎么做吗?

【问题讨论】:

  • 我很想创建一个包含 GCP SDK 的 Docker 映像,从而为您提供 gsutil。然后,您可以编写一个 shell 转义并运行命令的 Node/Python/Java 应用程序。然后,您可以定义要由 Cloud Run 运行的映像。因此,最终结果将是“当您安全地调用端点时,您的脚本就会运行”。这与 Cloud Functions 的语义相同,但现在您可以控制整个环境。我认为我们不能假设 gsutil 存在于 Cloud Functions 中。
  • 目前,无法在 Google Cloud Function 中运行 shell 命令。

标签: google-cloud-functions google-cloud-storage google-compute-engine google-cloud-scheduler


【解决方案1】:

Cloud Functions 是无服务器的,您无法管理运行时环境。您不知道 Cloud Functions 的运行时环境中安装了什么,也不能假设 GCLOUD 存在。

解决方案是使用云运行。该行为非常接近 Cloud Functions,只需将您的函数包装在网络服务器上(我写了我的第一篇文章),然后在您的容器中安装您想要的,尤其是 GCLOUD SDK(您也可以use a base image with GCLOUD SDK already installed)。这一次您将能够调用系统二进制文件,因为您知道它们的存在是因为您安装了它们!

无论如何,在执行脚本时要小心:容器是不可变的,您无法更改文件、二进制文件、存储的文件……我不知道您的脚本内容,但您不在一个虚拟机,你仍然在无服务器环境中,具有短暂的运行时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-18
    • 2016-02-01
    • 2020-08-26
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多