如何使用 Terraform 设置安全组规则描述?

How can I set the security group rule description with Terraform?

看来您现在可以设置 security group rule descriptions。这对于维护管理访问的白名单非常有用。

我可以在 AWS 控制台中设置描述,但不知道如何使用 Terraform 进行设置。

我的假设是,如果 AWS API 允许,Terraform 无需在 Terraform 代码中明确支持它就可以做到。也许这是一厢情愿的想法,我们将不得不等待 Terraform 支持新功能,或者也许我只是做错了。

我尝试在规则声明中简单地声明描述 属性(就像您对安全组本身的描述所做的那样):

    ingress {
        from_port       = 22
        to_port         = 22
        protocol        = "tcp"
        cidr_blocks     = ["123.456.789.123"]
        description     = "some rule description"
        }

Terraform 在计划阶段退出:

aws_security_group.somegroup: ingress.0: invalid or unknown key: description

我还尝试在规则声明中设置标签(就像设置安全组名称一样):

     ingress {
         from_port       = 22
         ...
      tags {
           "Description" = "some rule description"
           }
      }

Terraform 在计划阶段退出:

aws_security_group.somegroup: ingress.0: invalid or unknown key: tags

您似乎没有正确使用 Terraform api。

您不能将 description 设置为 aws_security_group_rule 资源。

aws_security_group_rule on Terraform.io

resource "aws_security_group_rule" "allow_all" {
  type            = "ingress"
  from_port       = 0
  to_port         = 65535
  protocol        = "tcp"
  cidr_blocks     = ["0.0.0.0/0"]
  prefix_list_ids = ["pl-12c4e678"]

  security_group_id = "sg-123456"
}

您可以将 description 设置为 aws_security_group 资源。

aws_security_group on Terraform.io

来自他们的文档:

resource "aws_security_group" "allow_all" {
  name        = "allow_all"
  description = "Allow all inbound traffic"

  ingress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port       = 0
    to_port         = 0
    protocol        = "-1"
    cidr_blocks     = ["0.0.0.0/0"]
    prefix_list_ids = ["pl-12c4e678"]
  }
}

aws_security_groupdescription 属性 应该在 ingressegress 声明之外声明,在其根范围

截至目前,这是可能的,您的代码应该有效。