允许使用 terraform 访问一个 AWS 安全组到另一个安全组

Arb*_*zar 5 terraform

我想将一个安全组的访问权限授予另一个安全组,但我无法使其工作,有人可以指出我哪里做错了吗?

这是我的模块的main.tf

resource "aws_security_group" "rds_sg" {
    name = "${var.name}-${var.environment}-rds"
    description = "Security Group ${var.name}-${var.environment}"
    vpc_id = "${var.vpc_id}"
    tags {
        Name = "${var.name}-${var.environment}-rds"
        environment =  "${var.environment}"
    }

    // allows traffic from the SG itself
    ingress {
        from_port = 0
        to_port = 0
        protocol = "-1"
        self = true
    }

    // allow traffic for TCP 3306
    ingress {
        from_port = 3306
        to_port = 3306
        protocol = "tcp"
        security_group_id = "${var.security_group_id}"
    }

    // outbound internet access
    egress {
        from_port = 0
        to_port = 0
        protocol = "-1"
        cidr_blocks = ["0.0.0.0/0"]
    }
}

output "rds_sg_id" {
    value = "${aws_db_security_group.rds_sg.id}"
}
Run Code Online (Sandbox Code Playgroud)

模块的变量.tf

// Module specific variables
variable "name" {
    default = "test"
}

variable "environment" {
    default = "test"
}

variable "vpc_id" {
    description = "The VPC this security group will go in"
}

variable "security_group_id" {
    description = "Security Group id"
}
Run Code Online (Sandbox Code Playgroud)

其中 security_groups_id 的值来到另一个模块,所以在我的主文件中它是这样的:

module "rds_sg" {
    source = "./modules/rds_sg"
    name = "tendo"
    environment = "dev"
    vpc_id = "${module.vpc_subnets.vpc_id}"
    security_group_id = "${module.web_sg.web_sg_id}"
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行“terraform”时,我收到此错误:

Errors:

  * 1 error(s) occurred:

* module root: module rds_sg: security_group_id is not a valid parameter
Run Code Online (Sandbox Code Playgroud)

Lia*_*iam 6

我想我已经找到问题了;您使用了错误的参数在模块的 main.tf 中提供安全组。请参阅下面修改后的代码和此处的文档。

// allow traffic for TCP 3306
ingress {
    from_port = 3306
    to_port = 3306
    protocol = "tcp"
    security_groups = ["${var.security_group_id}"]
}
Run Code Online (Sandbox Code Playgroud)