aws_security_group - 条件入口

Giu*_*rzi 5 amazon-ec2 terraform terragrunt

我正在测试 Terraform/Terragrunt 以将 RDS DB 部署到 AWS。

ingress有没有办法在定义中添加条件aws_security_group

Terraform v0.12.3 Terragrunt 版本 v0.19.8

现在我能做的最好的事情就是为每个条件添加一个安全组,每个安全组都有一个计数语句,并将所有单个安全组添加到数据库实例,例如

resource "aws_security_group" "db_sg_office" {
      ...
      count = var.publicly_accessible ? 1 : 0
      
      ingress {
        ...
        cidr_blocks = ["1.2.3.4/32"]
      }    
}

...
    
resource "aws_db_instance" "default" {
  ...
  vpc_security_group_ids = [ ... , "${aws_security_group.db_sg_office.id}" , ...]
  ...
}
Run Code Online (Sandbox Code Playgroud)

当数据库资源中引用安全组时,这实际上不起作用并且会失败。

Rya*_*Kim 6

在 terraform 上尝试使用带有countaws_security_group_rule参数的资源,有关其他参考,请阅读文档


resource "aws_security_group" "db_sg_office" {
  ...
}

resource "aws_security_group_rule" "open_public" {
  security_group_id = aws_security_group.db_sg_office.id
  count     = var.publicly_accessible ? 1 : 0
  type      = "ingress"
  from_port = 0
  to_port   = 65535
  cidr_blocks = ["1.2.3.4/32"]
  protocol  = "tcp"
}
Run Code Online (Sandbox Code Playgroud)