使用Terraform,无法将SSM文档添加到AWS_CLOUDWATCH_EVENT_TARGET



我是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

最新更新