簡體   English   中英

使用 terraform,無法將 SSM 文檔添加到 aws_cloudwatch_event_target

[英]Using terraform, unable to add SSM document to aws_cloudwatch_event_target

我對 Terraform 非常陌生,我正在嘗試使用它來復制我通過 AWS 控制台成功創建的內容。

我正在嘗試將“SSM 運行命令”指定為 Cloudwatch 規則的目標,並且可以獲取使用 aws_cloudwatch_event_target 資源定義的所有內容,但“文檔”字段除外。 規則目標和所有其他相關的點點滴滴都已成功創建,但是當我從控制台編輯規則時,文檔部分沒有填寫(下面的屏幕截圖)。 因此,規則未能觸發。

控制台中顯示的目標

查看 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”。

任何幫助將不勝感激!

我認為您需要做的是創建其中之一: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/ssm_document.html

通過 cloudformation 創建時,我遇到了文檔沒有被正確選擇的同樣問題。

我做錯了什么?

  • 我擁有的 AWS Managed 文檔的 ARN 是錯誤的

當我修復 AWS-RunShellScript 的 ARN 時,它在 cloudformation 創建資源后開始顯示在控制台中

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

我查閱的大多數文檔在 ARN 中都有一個帳戶 ID。 刪除帳戶 ID 解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM