我正在使用容器生成器来处理巨大的JSON文件并转换它们。如此处所述,它很有可能是非标准用法。
是否可以触发容器构建器构建并通过云函数向其传递参数?这将允许对GCS中新上传的文件进行操作,并通过容器构建器自动处理它们。
目前,我正在尝试使用 REST API 来触发它(我是 Node.js 的新手(,但我的 URL 上得到了 404。我正在具有完全 API 访问权限的 Cloud Shell 实例上进行开发。
我尝试通过PUT
请求和包含成功运行cloudbuild.yaml
的 JSON 等效项的 JSON 正文触发的 URL 是:https://cloudbuild.googleapis.com/v1/projects/[PROJECT_ID]/builds
我正在使用来自 Node.js 的请求库:
request({ url: "https://cloudbuild.googleapis.com/v1/projects/[PROJECT_ID]/builds",
method: 'PUT',
json: {"steps":[{"name":"gcr.io/cloud-builders/gsutil",(...),
function(error, response, body){
console.log(error)
console.log(response)
console.log(body)
})
显然,已经有人做到了。该库位于 GitHub: https://github.com/mhr3/gcp-container-builder-node 上,可通过 npm: https://www.npmjs.com/package/gcp-container-builder
起初我不清楚用法,但这就是我现在使用它的方式:
var build = Object.create(null);
build.steps = [{
name: 'gcr.io/cloud-builders/gsutil',
args: ['cp', 'gs://some_bucket/some_file.json', '/workspace/some_file.json']
}]
// more build steps, converting the file, uploading it, etc.
builder.createBuild(build, function(err, resp) {
console.log(err);
console.log(resp);
});
您建议的过程需要三个不同的步骤:
Google Cloud Storage → Cloud Functions → API 调用。
根据你公开的要求,最好使用容器生成器的生成触发器。
您将文件上传到 Google 云源存储库并创建触发器。每次将更改上传到存储库时,容器生成器都会自动生成映像。这样,您可以避免使用云函数、API 调用和 Node.js。
这将程序减少到只有一个步骤,从而降低复杂性并提高可靠性。