有没有办法将 运行 gsutil 作为 GCP 上的常规 Linux cronjob?

Is there a way to run gsutil as a regular Linux cronjob on GCP?

我有一个脚本可以使用 gcloud 实用程序(例如 gsutilbq)执行一些操作,例如:

#!/usr/bin/env bash

bq 'SELECT * FROM myproject.whatever WHERE date > $x' > res.csv
gsutil cp res.csv gs://my_storage/foo.csv

这在我的机器或 VM 上有效,但我不能保证它会一直运行,所以我想将其添加为 GCP cronjob/Lambda 类型的东西。从文档 here 看来,Cloud Scheduler 只能执行 HTTP 请求 Pub/Sub 或 App Engine HTTP,其中 none 正是我想要的。

所以:在 GCP 中有没有什么方法可以自动执行一些 gsutil / bq 命令,比如 cronjob,但没有我提供永远在线的机器?

可能会有多个答案,这只是一个。

对我来说,我会检查 Google Cloud Run 的概念。这里的想法是,您可以创建一个 Docker 图像,然后将其实例化,运行 并在 REST 请求调用时进行清理。您在 docker 图片中放入的内容 100% 由您决定。它可以是一个简单的图像,其中安装了 gcloud 和 gsutil 等工具,并通过脚本 运行 使用任何所需的参数对它们进行安装。您与 Cloud 运行 的合同只是您使用传入的 HTTP 请求。

当没有对云 运行 的请求时,没有任何费用,因为 运行ning 什么都没有。您只需为您的逻辑实际执行的持续时间付费。

我推荐 Cloud 运行 而不是 Cloud Functions,因为 Cloud 运行 允许您定义命令 运行 所在的环境……例如……gsutil 的可用性。