terraform:source_security_group_id的语法

时间:2017-08-17 14:00:49

标签: terraform

我需要使用terraform source_security_group_id 指标将另一个安全组设置为当前安全组的来源。但是当我尝试使用明显语法的变体时,比如

resource "aws_security_group" "foo-sg" {

    "ingress" = {
    "from_port" = 443
    "to_port" = 443
    "protocol" = -1
    "source_security_group_id" = "sg-9115bae1"
  }
}

...我收到错误:

  

aws_security_group.foo-sg:ingress.0:无效或未知密钥:   source_security_group_id

任何人都有使用此构造的示例吗?

2 个答案:

答案 0 :(得分:5)

此功能的属性名称为security_groups,可按如下方式使用:

resource "aws_security_group" "foo-sg" {
  ingress {
    from_port = 443
    to_port   = 443
    protocol  = "tcp"

    security_groups = ["sg-9115bae1"]
  }
}

另请注意,-1的特殊protocol值(意为“任何协议”)会导致端口号被忽略,因为只有UDP和TCP具有端口号的概念。如上例所示,将protocol设置为tcp是允许HTTPS传入连接所必需的。

答案 1 :(得分:0)

如果上面的代码不起作用,请使用变量方法。表示定义变量并从输出中获取

resource "aws_security_group" "foo-sg" {
  ingress {
    from_port = 443
    to_port   = 443
    protocol  = "tcp"

    security_groups = ["${var.ec2_sg}"]
  }
}
##in variable file add this
variable = "ec2_sg" {}

then in main file give the input from another module