3

我有一个脚本,可以用和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

这适用于我的机器或虚拟机,但我不能保证它会一直开启,所以我想将它添加为 GCP cronjob/Lambda 类型的东西。从这里的文档来看,Cloud Scheduler 似乎只能执行 HTTP 请求、Pub/Sub 或 App Engine HTTP,这些都不是我想要的。

那么:GCP 中是否有任何方法可以自动执行某些gsutil/bq命令,例如 cronjob,但无需我提供永远在线的机器

4

1 回答 1

4

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

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

当没有对 Cloud Run 的请求时,不会产生任何费用,因为没有任何东西在运行。您只需为您的逻辑实际执行的持续时间付费。

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

于 2019-12-18T17:51:53.557 回答