google-cloud-platform - GCP Cloud Scheduler API 问题

标签 google-cloud-platform terraform google-apis-explorer google-cloud-scheduler

我正在尝试通过 terraform 测试设置 GCP Cloud Scheduler 作业,并在尝试通过 API 创建时发现问题。我还在这个页面上测试 API:projects.locations.jobs/create 。我看到的错误是围绕无效参数:

{
  "error": {
    "code": 400,
    "message": "Job name must be formatted: \"projects/\u003cPROJECT_ID\u003e/locations/\u003cLOCATION_ID\u003e/jobs/\u003cJOB_ID\u003e\".",
    "status": "INVALID_ARGUMENT"
  }
}

然后我修改以适应该格式并看到此错误:

{
  "error": {
    "code": 400,
    "message": "Resource name should start with \"/projects/\u003cPROJECT_ID\u003e/\"",
    "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"
}

确实没有成功,所有请求都会收到 ERROR 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}\"}")}"
  }
}

关于google-cloud-platform - GCP Cloud Scheduler API 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55128124/

相关文章:

angularjs - YouTube 分析 - 创建请求

google-apis-explorer - 安卓管理API : List of Enterprises/Policies?

google-cloud-platform - 我如何(或是否可以)使用 Terraform 创建 Google Cloud Run Capacity 设置?

go - 如何从 GCP 中的另一个 Go Cloud Function 调用 Go Cloud Function

docker - 在我的 Dockerfile 中,如何使用 `COPY --from` 语法来使用 Google Container Registry 中的镜像?

google-cloud-platform - Terraform:不允许跨项目引用

kubernetes - 使用 Terraform 或 Helm 在 EKS 集群上设置 ISTIO

google-cloud-platform - 使用 gcloud 报告 Stackdriver 错误

amazon-web-services - 在与创建角色的文件夹不同的文件夹中访问 role_arn

google-api - YouTube 数据 API 不再从 search.list 返回事件直播流