1

我正在使用 Container Builder 来处理巨大的 JSON 文件并对其进行转换。如此处所述,这是非标准使用它的一个很好的可能性。

是否可以触发容器构建器构建并通过云功能将参数传递给它?这将允许对 GCS 中新上传的文件采取行动,并通过容器构建器自动处理它们。

目前我正在尝试使用 REST API 来触发它(我是 Node.js 的新手),但我的 URL 上出现了 404。我正在一个具有完整 API 访问权限的 Cloud Shell 实例上进行开发。

我试图通过PUT请求和包含成功运行的 JSON 等效项的 JSON 正文触发的 URLcloudbuild.yaml是: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)
    })
4

2 回答 2

1

显然,已经有人这样做了。该库位于 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);
});
于 2018-05-20T12:35:56.390 回答
-1

您建议的程序需要三个不同的步骤:

谷歌云存储 → 云函数 → API 调用。

根据您公开的要求,最好使用Container Builder 的 Build Triggers

您将文件上传到 Google Cloud Source Repository 并创建触发器。每次您将更改上传到存储库时,Container Builder 都会自动构建映像。这样您就可以避免使用云函数、API 调用和 Node.js。

这会将程序减少到只有一个步骤,从而降低了复杂性并提高了可靠性。

于 2018-05-10T15:03:04.160 回答