Как исправить «Ошибка 400: недопустимое значение в« job.pubsub_target.data »(TYPE_BYTES)» для ресурса terraform «google_cloud_scheduler_job» - PullRequest
0 голосов
/ 03 мая 2019

У меня есть следующая функция gcloud для облачного планировщика Google, которая прекрасно работает. Однако я не могу понять, как поместить это в terraform только из-за одного параметра в поле pubsub_target { data = "".

Это ошибка, которую я продолжаю получать. google_cloud_scheduler_job.c4c_intel_sources_scheduler: Error creating Job: googleapi: Error 400: Invalid value at 'job.pubsub_target.data' (TYPE_BYTES), Base64 decoding failed for "{"scheduler".......

Не знаю, как решить эту ошибку

Terraform definition

resource "google_cloud_scheduler_job" "c4c_sources_scheduler" {
  name    = "${var.cluster}-sources-scheduler"
  description = "Creating Sources Scheduler Job"
  count = "${var.c4c_intel_sources_enabled ? 1 : 0}"
  provider = "google-beta"
  project = "${var.project}"
  schedule = "${var.c4c_intel_sources_schedule}"
  region="us-east1"
  pubsub_target {
    topic_name = "${google_pubsub_topic.c4c_sources_topic.id}"
    data = "{\"scheduler\": [ {\"__type\":  \"processors.google_cloud.scheduler\",\"state_bucket\": \"$STATE_BUCKET\",\"state_path\": \"scheduler_state.json\",\"config_bucket\": \"$CONFIG_BUCKET\",\"topic\": \"$TOPIC\"}]}"


Эквивалент gcloud definition

gcloud beta scheduler jobs create pubsub shoaib-test-c4c-intel-sources-scheduler \
--schedule="0 * * * *" \
--topic="projects/eng-node-163913/topics/test-intel-sources"\
--message-body="{\"scheduler\":\ [ {\"__type\": \"processors.google_cloud.scheduler\",\\"state_bucket\": \"$STATE_BUCKET\",\"state_path\": \\"scheduler_state.json\",\\"config_bucket\": \"$CONFIG_BUCKET\",\\"topic\": \"$TOPIC\"}]}" \
--description="C4C Intel Sources Scheduler" \
--project=engineering-node

1 Ответ

0 голосов
/ 20 июня 2019

Я думаю, вам нужно Base64Encode элемента pubsub_target.data, как показано в их документах: https://www.terraform.io/docs/providers/google/r/cloud_scheduler_job.html

resource "google_cloud_scheduler_job" "job" {
  name     = "test-job"
  description = "test job"
  schedule = "*/2 * * * *"

  pubsub_target {
    topic_name = "${google_pubsub_topic.topic.id}"
    data = "${base64encode("test")}"
  }
}
...