我试图弄清楚如何根据提供的变量制定不同的出口规则。对于我的用例,安全组应该具有对世界的完全出站访问权限,或者完全删除。
目前,当我需要进行这些更改时,我会手动注释掉一条规则与另一条规则,但理想情况下,我想通过使用变量或其他用户提供的方式来控制它。
当我需要向世界开放出口时:
resource "aws_security_group" "test" {
...
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
...
当我需要完全删除所有出口规则时:
resource "aws_security_group" "test" {
...
egress = []
...
最好使用
aws_security_group_rule
和count
:
variable "enable_egress" {
type = bool
default = true
}
resource "aws_security_group" "test" {
}
resource "aws_security_group_rule" "example" {
security_group_id = aws_security_group.test.id
count = var.enable_egress == true ? 1 : 0
type = "egress"
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}