我是Terraform的新手,并且正在尝试使用它来复制我通过AWS控制台成功创建的内容。
我正在尝试将" SSM Run命令"指定为CloudWatch规则的目标,并且可以使用AWS_CLOUDWATCH_EVENT_TARGET RESOUDICE AWS WINDAL AESTION进行所有定义。规则目标和所有其他关联的位和零件都是成功创建的,但是当我从控制台中编辑规则时,文档部分未填写(下面的屏幕截图(。因此,该规则未能开火。
目标 - 股中的目标
查看aws_cloudwatch_event_target的Terraform文档,我看不到该文档指定的任何参数,所以我想知道这是否可能吗?考虑到其他所有参数似乎都涵盖了这很奇怪。
下面是我用来创建目标的代码 - 那里有硬编码的内容,但我只是想让它起作用。
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中?我希望能够指定一个"文档"参数,但您可以指定的只是目标的" ARN"。
任何帮助将不胜感激!
i在通过云形式创建时没有正确选择文档的问题。
我做错了什么?
- AWS管理文件的ARN是错误的
当我为AWS-RunshellScript修复ARN时,它开始在CloudFormation创建资源
后开始出现在控制台中 arn:aws:ssm:ap-southeast-2::document/AWS-RunShellScript
我经过的大多数文档都在ARN中都有一个帐户ID。删除帐户ID解决了问题。
我认为您需要做的是创建其中之一:https://www.terraform.io/docs/providers/aws/r/ssm_document.html
这将为您创建AWS中的SSM文档,然后一旦您需要将该文档与SSM_Document_association相关联。
https://www.terraform.io/docs/providers/aws/r/ssm_association.html
与您的实例关联的文档后,该事件应该可以通过CloudWatch触发。
您可以创建自己的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/d/ssm_document.html