AWS Параметр пакетного ввода из Cloudwatch через Terraform - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть проект terraform, в котором я пытаюсь настроить правило события cloudwatch и цель для запуска новой отправки пакетного задания aws по расписанию. У меня проблема с передачей параметра stati c (ie, переменная, представляющая команду для запуска) из события cloudwatch в batch_target.

В моем aws_batch_job_definition у меня есть следующее как часть of container_properties:

    container_properties = <<CONTAINER_PROPERTIES
{
    "command": ["echo", "command", "Ref::inputCommand"],
...etc
}

И моя цель события cloudwatch, связанная с правилом расписания, выглядит следующим образом:

resource "aws_cloudwatch_event_target" "test_target" {
  rule = aws_cloudwatch_event_rule.every_minute.name
  role_arn = aws_iam_role.event_iam_role.arn
  arn = aws_batch_job_queue.test_queue.arn
  batch_target {
      job_definition = aws_batch_job_definition.test.arn
      job_name = "job-test"
      job_attempts = 2
  }
  input = "{\"inputCommand\": \"commandToRun\"}" #this line does not work as intended
}

Существует ли простой способ использования input или input_transformer свойства для event_target для передачи через переменную inputCommand в пакетное задание?

Настройка работает, когда я отправляю задание с этим параметром и значением, заданным через консоль, или устанавливаю параметр по умолчанию в определении задания, но у меня возникают проблемы при выполнении этого через событие cloudwatch в terraform.

1 Ответ

1 голос
/ 17 апреля 2020

У меня была похожая проблема, но с шаблоном CloudFormation.

Эти документы мне очень помогли: https://docs.aws.amazon.com/batch/latest/userguide/batch-cwe-target.html

В вашем случае, я думаю, что решение может быть:

  input = "{\"Parameters\" : "{\"inputCommand\": \"commandToRun\"}}"

Мой рабочий шаблон CloudFormation выглядит примерно так:

JobDefinition:
  Type: AWS::Batch::JobDefinition
  Properties:
    ...
    ContainerProperties:
      ...
      Image:...
      Command:
        - 'Ref::MyParameter'

ScheduledRule:
  Type: AWS::Events::Rule
  Properties:
    ...
    Targets:
      - ...
        BatchParameters:
          ...
          Input: "{\"Parameters\" : {\"MyParameter\": \"SomeValue\"}}"

Надеюсь, это поможет!

...