我有一个脚本,可以对gcloud
和gsutil
之类的bq
实用工具进行一些处理,例如:
#!/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请求,发布/订阅或App Engine HTTP,而这些都不是我想要的。
因此: GCP中是否有任何方法可以使某些gsutil
/ bq
命令自动化,例如cronjob,但我却没有提供始终在线的计算机?>
答案 0 :(得分:1)
可能会有多个答案,但这只是一个。
对我来说,我将研究Google Cloud Run的概念。这里的想法是创建一个Docker映像,然后在被REST请求调用时实例化,运行并清理它。您在docker映像中放置的内容由您决定100%。它可能是带有安装了脚本的gcloud和gsutil之类的工具的简单映像,该脚本可以使用任何所需参数运行它们。您与Cloud Run的合同仅是您消耗传入的HTTP请求。
当没有对Cloud Run的请求时,由于没有任何运行,因此无需付费。仅在逻辑实际执行的期间内向您收费。
我建议使用Cloud Run over Cloud Functions,因为Cloud Run允许您定义命令运行的环境...例如gsutil的可用性。