Список Terraform в головной боли синтаксиса определения ресурса - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь импортировать aws_glue_trigger в мое состояние terraform, чтобы я мог видеть, как это выглядит в файле состояния, и создать полное определение ресурса для go, используя его в качестве учебного пособия для выполнения всех наших ETL-операций в terraform.

Я импортировал состояние с пустым держателем ресурса, но не могу понять, как синтаксис списка должен работать в определении ресурса.

Например, в моем состоянии триггер с предикатом с 3 условиями и логическим под ним, который по завершении заданий 1, 2 и 3 будет запускать EXAMPLE_CRAWLER - относительно просто: -

{
  "mode": "managed",
  "type": "aws_glue_trigger",
  "name": "EXAMPLE_TRIGGER",
  "provider": "provider.aws",
  "instances": [
    {
      "schema_version": 0,
      "attributes": {
        "actions": [
          {
            "arguments": {},
            "crawler_name": "EXAMPLE_CRAWLER",
            "job_name": "",
            "timeout": 0
          }
        ],
        "arn": "arn:SOMEARN",
        "description": "",
        "enabled": true,
        "id": "EXAMPLE_TRIGGER",
        "name": "EXAMPLE_TRIGGER",
        "predicate": [
          {
            "conditions": [
              {
                "crawl_state": "",
                "crawler_name": "",
                "job_name": "JOB1",
                "logical_operator": "EQUALS",
                "state": "SUCCEEDED"
              },
              {
                "crawl_state": "",
                "crawler_name": "",
                "job_name": "JOB2",
                "logical_operator": "EQUALS",
                "state": "SUCCEEDED"
              },
              {
                "crawl_state": "",
                "crawler_name": "",
                "job_name": "JOB3",
                "logical_operator": "EQUALS",
                "state": "SUCCEEDED"
              }
            ],
            "logical": "AND"
          }
        ],
        "schedule": "",
        "tags": {},
        "timeouts": {
          "create": null,
          "delete": null
        },
        "type": "CONDITIONAL",
        "workflow_name": "EXAMPLE_WORKFLOW"
      },
      "private": "some_private_string"
    }
  ]
}

В соответствии с документами предикат определяется как: -

предикат - (Необязательно) Предикат, указывающий, когда должен срабатывать новый триггер. Требуется, когда тип триггера является УСЛОВНЫМ. Определено ниже.

и аргументы для предиката определяются как: -

условия - (обязательно) A список условий, определяющих, когда триггер сработает. Определено ниже.

логический - (Необязательно) Как обрабатывать несколько условий. По умолчанию используется AND. Допустимые значения: AND или ANY

, которые соответствуют штрафа на выходе состояния.

Это моя последняя итерация в попытке получить это через анализатор: -

resource "aws_glue_trigger" "EXAMPLE_TRIGGER" {
  name = "EXAMPLE_TRIGGER"
  type = "CONDITIONAL"
  workflow_name = "EXAMPLE_WORKFLOW"

  actions {
        arguments = {}
        crawler_name = "EXAMPLE_CRAWLER"
        job_name = ""
        timeout = 0
    }

  predicate {
    conditions = [{
        crawl_state = ""
        crawler_name = ""
        job_name = "JOB1"
        logical_operator = "EQUALS"
        state = "SUCCEEDED"
        },
        {
        crawl_state = ""
        crawler_name = ""
        job_name = "JOB2"
        logical_operator = "EQUALS"
        state = "SUCCEEDED"
        },
        {
        crawl_state = ""
        crawler_name = ""
        job_name = "JOB3"
        logical_operator = "EQUALS"
        state = "SUCCEEDED"
    }]
    logical = "AND"
    }
}

Это приводит к ошибке «Ошибка: требуется определение аргумента или блока», которая подразумевает, что он хочет, чтобы я поставил «равно» после условий

Здесь требуется определение аргумента или блока. Чтобы задать аргумент, используйте знак равенства "=", чтобы ввести значение аргумента.

Это противоречит документам и примерам do c page

Когда я добавляю «равно», я получаю «Ошибка: неподдерживаемый аргумент»

Аргумент с именем «условия» здесь не ожидается. Вы хотели определить блок типа «условия»?

Попросить меня снова вывести равенства и определить как блок?

Я в замешательстве и, возможно, упускаю что-то простое - но любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 22 января 2020

Я нашел ответ на это из комментария Энди Шима (как только я его получил :)), и он спас меня здесь - Спасибо. Добавьте только минимальные аргументы для анализа файла, тогда выходной файл плана предоставит вам весь синтаксис и необходимые данные. Для этого, чтобы получить список объектов, таких как ниже, просто повторите блок: -

т.е. не делайте: -

conditions: [
          {
            "crawl_state": "",
            "crawler_name": "",
            "job_name": "JOB1",
            "logical_operator": "EQUALS",
            "state": "SUCCEEDED"
          },
          {
            "crawl_state": "",
            "crawler_name": "",
            "job_name": "JOB2",
            "logical_operator": "EQUALS",
            "state": "SUCCEEDED"
          },
          {
            "crawl_state": "",
            "crawler_name": "",
            "job_name": "JOB3",
            "logical_operator": "EQUALS",
            "state": "SUCCEEDED"
          }

, но делайте: -

    conditions {
                "crawl_state": "",
                "crawler_name": "",
                "job_name": "JOB1",
                "logical_operator": "EQUALS",
                "state": "SUCCEEDED"
              }
   conditions {
                "crawl_state": "",
                "crawler_name": "",
                "job_name": "JOB2",
                "logical_operator": "EQUALS",
                "state": "SUCCEEDED"
              }
   conditions {
                "crawl_state": "",
                "crawler_name": "",
                "job_name": "JOB3",
                "logical_operator": "EQUALS",
                "state": "SUCCEEDED"
              }
...