我需要使用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
任何人都有使用此构造的示例吗?
答案 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