Используя terraform, невозможно добавить документ SSM в aws_cloudwatch_event_target

Я очень новичок в Terraform и пытаюсь использовать его для репликации того, что я успешно создал через консоль AWS.

Я пытаюсь указать "SSM Run Command" в качестве цели для правила Cloudwatch и могу получить все, что определено с помощью ресурса aws_cloudwatch_event_target, кроме поля "Документ". Цель правила и все остальные связанные фрагменты успешно созданы, но когда я редактирую правило из консоли, раздел документа не заполняется (снимок экрана ниже). Следовательно, правило не срабатывает.

предназначаться-в-показан-в-консоли

Просматривая документацию Terraform для aws_cloudwatch_event_target, я не вижу параметров, которые можно указать для документа, поэтому мне интересно, возможно ли это вообще? Что было бы странно, учитывая, что каждый другой параметр, кажется, покрыт.

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

resource "aws_cloudwatch_event_target" "autogrow" {
    rule = "autogrow"
    arn =  "arn:aws:ssm:eu-west-1:999999999999:document/AWS-RunShellScript"
    role_arn = "arn:aws:iam::999999999999:role/ec2-cloudwatch"

    run_command_targets {
        key = "tag:InstanceIds"
        values = ["i-99999999999"]
    }

    input = <<INPUT
    {
    "commands": "/data/ssmscript.sh",
    "workingDirectory" : "/data",
    "executionTimeout" : "300"
    }
    INPUT
}

Можно ли сделать то, что я пытаюсь сделать через Terraform? Он работает через консоль, но мне интересно, функциональность просто отсутствует в Terraform? Я ожидаю, что параметр "Document" можно будет указать, но все, что вы можете указать, это "arn" для цели.

Любая помощь будет принята с благодарностью!

1 ответ

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

Что я делал не так?

  • ARN для документа AWS Managed, который у меня был, был неправильным

Когда я исправил ARN для AWS-RunShellScript, он начал отображаться в консоли после того, как облачная информация создала ресурс.

arn:aws:ssm:ap-southeast-2::document/AWS-RunShellScript

Большинство документов, которые я просмотрел, имели идентификатор учетной записи в ARN. Удаление идентификатора учетной записи решило проблему.

Вы можете создать свой собственный документ SSM или использовать документы, созданные AWS.

Чтобы получить содержимое документа, принадлежащего AWS:

data "aws_ssm_document" "aws_doc" {
  name            = "AWS-RunShellScript"
  document_format = "JSON"
}

output "content" {
  value = "${data.aws_ssm_document.aws_doc.content}"
}

Ссылка: https://www.terraform.io/docs/providers/aws/d/ssm_document.html

Я думаю, что вам нужно сделать, это создать один из следующих: https://www.terraform.io/docs/providers/aws/r/ssm_document.html

Это создаст для вас документ SSM в AWS, а затем, как только у вас появится необходимость связать этот документ с вашими экземплярами с помощью ssm_document_association.

https://www.terraform.io/docs/providers/aws/r/ssm_association.html

Как только у вас будет документ, связанный с вашими экземплярами, событие должно быть в состоянии инициироваться через cloudwatch.

Другие вопросы по тегам