Используя 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.