google-cloud-functions - 通过 Cloud Functions 触发 Google Container Builder 构建
问题描述
我正在使用 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)
})
解决方案
显然,已经有人这样做了。该库位于 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);
});
推荐阅读
- testing - 当页面对象中声明的断言在 TestCafe 的同一测试中被调用两次时,DOM 快照警告
- rest - 谷歌云存储与谷歌云存储 JSON API
- c# - 局部变量未在 C# 中初始化
- c++ - 替换公式循环的编译器优化技术
- javascript - 在对象内找不到脚本回调函数
- objective-c - Objc - 扩展 - TableView 委托
- elasticsearch - 如何在 Elasticsearch 中过滤聚合结果?
- javascript - api请求后无法访问对象中的值
- python - LSTM - 为训练准备数据
- autohotkey - Autohotkey:替换组合键(但有超时)