我正在尝试通过Terraform测试设置GCP Cloud Scheduler作业,并在尝试通过API创建时发现问题。我还在此页面上测试API:projects.locations.jobs/create。我看到的错误是围绕一个无效的参数:
{
"error": {
"code": 400,
"message": "Job name must be formatted: "projects/u003cPROJECT_IDu003e/locations/u003cLOCATION_IDu003e/jobs/u003cJOB_IDu003e".",
"status": "INVALID_ARGUMENT"
}
}
i然后修改以适合该格式并查看此错误:
{
"error": {
"code": 400,
"message": "Resource name should start with "/projects/u003cPROJECT_IDu003e/"",
"status": "INVALID_ARGUMENT"
}
}
这是请求主体的样子:
{
"name": "projects/<my-project-id>/locations/us-central1/jobs/snapshots",
"pubsubTarget": {
"topicName": "disk-snapshot-function-trigger",
"attributes": {
"num_backups": "5",
"project": "<my-project-id>"
}
},
"schedule": "0 19 * * *",
"timeZone": "America/Los_Angeles"
}
确实没有获胜,所有请求都会收到错误400。
以这种方式正确工作:
{
"name": "projects/PROJECT_ID/locations/us-central1/jobs/snapshots",
"pubsubTarget": {
"topicName": "projects/PROJECT_ID/topics/disk-snapshot-function-trigger",
"attributes": {
"num_backups": "5",
"project": "PROJECT_ID"
}
},
"schedule": "0 19 * * *",
"timeZone": "America/Los_Angeles"
}
或Terraform:
resource "google_cloud_scheduler_job" "snapshot_schedule" {
provider = "google-beta"
name = "snapshots"
schedule = "${var.snapshot_schedule}"
time_zone = "America/Los_Angeles"
project = "${var.project_id}"
pubsub_target {
topic_name = "projects/${var.project_id}/topics/${google_pubsub_topic.trigger_disk_snapshot_function_pubsub.name}"
data = "${base64encode("{"project":"${var.project_id}", "num_backups":"${var.num_backups}"}")}"
}
}