首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用SSM文档的Terraform

调用SSM文档的Terraform
EN

Stack Overflow用户
提问于 2021-02-18 02:19:40
回答 2查看 593关注 0票数 0

有人能帮我一下吗?我正在尝试创建自动化来定期停止ec2实例。我知道如何使用数据源:

代码语言:javascript
复制
    data "aws_ssm_document" "ssm_doc" {
      name            = "AWS-StopEC2Instance"
      document_format = "JSON"
    }

当我尝试创建关联时:

代码语言:javascript
复制
    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.

有没有人可以帮助我,告诉我如何通过这个角色?

EN

回答 2

Stack Overflow用户

发布于 2021-02-18 03:51:27

根据文档aws_ssm_association,此资源没有特定于iam role的配置。所以错误可能在其他地方。

从documentation Troubleshooting Systems Manager Automation

无效假定角色运行自动化时,假定角色要么在runbook中提供,要么作为runbook的参数值传递。如果未正确指定或配置假定角色,则可能会发生不同类型的错误。

您需要签入您正在导入的ssm_doc,它基本上只是一个cloudformation模板,因此您必须更正那里的角色。

Method 2: Use IAM to configure roles for Automation

票数 0
EN

Stack Overflow用户

发布于 2021-10-29 08:37:39

AWS-StopEC2Instance接受AutomationAssumeRole参数。您必须为SSM提供执行代码所需的角色。例如:

代码语言:javascript
复制
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块适用于CommandPolicy或速率控制Automation的SSM文档类型。对于简单的Automation执行,不需要targets

代码语言:javascript
复制
resource "aws_ssm_association" "example" {

  name = "AWS-StopEC2Instance"
  
  parameters = {
      AutomationAssumeRole = aws_iam_role.ssm.arn
      instanceIds = aws_instance.ex.id
  }  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66247750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档