Входной параметр AWS Batch из Cloudwatch через Terraform

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

В моем aws_batch_job_definition у меня есть следующее как часть 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.


person tftester    schedule 01.04.2020    source источник


Ответы (1)


У меня была аналогичная проблема, но с шаблоном 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\"}}"

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

person j5555    schedule 17.04.2020