[英]Terraform to call an SSM document
有人可以在這里幫助我嗎? 我正在嘗試創建自動化以定期停止 ec2 實例。 我知道如何使用數據源:
data "aws_ssm_document" "ssm_doc" {
name = "AWS-StopEC2Instance"
document_format = "JSON"
}
當我嘗試創建關聯時:
resource "aws_ssm_association" "example" {
name = ssm_doc
targets {
key = "InstanceIds"
values = [aws_instance.ex.id]
}
}
當我運行它時,我收到錯誤: Error creating SSM association: ValidationException: The assume role is invalid.
誰能幫助我並告訴我如何通過角色?
根據文檔aws_ssm_association ,此資源沒有特定於iam role
的配置。 所以錯誤可能在其他地方。
來自文檔故障排除 Systems Manager Automation
無效的承擔角色
運行自動化時,代入角色要么在 Runbook 中提供,要么作為 Runbook 的參數值傳遞。 如果未正確指定或配置代入角色,則可能會出現不同類型的錯誤。
您需要檢查您正在導入的ssm_doc
,它基本上只是一個cloudformation
模板,因此您必須更正那里的角色。
AWS-StopEC2Instance
采用AutomationAssumeRole
參數。 您必須為 SSM 提供角色以承擔執行您的代碼。 例如:
resource "aws_iam_role" "ssm" {
path = "/"
assume_role_policy = <<EOL
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": ["ec2.amazonaws.com", "ssm.amazonaws.com"]
},
"Action": "sts:AssumeRole"
}
]
}
EOL
managed_policy_arns = ["arn:aws:iam::aws:policy/service-role/AmazonSSMAutomationRole"]
inline_policy {
name = "my_inline_policy"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = ["iam:PassRole"]
Effect = "Allow"
Resource = "*"
},
]
})
}
}
此外, aws_ssm_association.example
中的targets
塊適用於Command
和Policy
或速率控制Automation
的 SSM 文檔類型。 對於Automation
的簡單執行,不需要targets
:
resource "aws_ssm_association" "example" {
name = "AWS-StopEC2Instance"
parameters = {
AutomationAssumeRole = aws_iam_role.ssm.arn
instanceIds = aws_instance.ex.id
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.