amazon-web-services - 如何使用 Terraform 附加或删除安全组的入口/出口规则?
问题描述
有没有办法在 Terraform 中管理 AWS 安全组以编辑现有 SG 的规则?
例如:如果我提供一个新实例,现有 SG 的入口规则会更新以允许新提供的实例。当实例终止时,SG 也需要更新。
如果 Terraform 不直接支持,请随意提出其他常见做法。
解决方案
是的,您可以向现有安全组 (SG) 添加和删除单个规则。这可以分两步完成:
- 使用aws_security_group获取现有 SG 的数据源:
data "aws_security_group" "selected" {
id = <group-id-of-existing-sg>
}
- 创建aws_security_group_rule资源以将新规则从步骤 1 添加到 SG:
resource "aws_security_group_rule" "example" {
type = "ingress"
from_port = 0
to_port = 65535
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
security_group_id = data.aws_security_group.selected.id
}
如果您的实例是在与 SG 规则相同的 TF 文件中创建的,terraform destroy
则实例和规则都将被销毁。
推荐阅读
- c# - 如何使用 C# 声明一个类的初始化多维数组
- linux - 小型嵌入式系统上主要应用程序的核心转储
- react-native - Javascript 捆绑器构建停留在 99%
- sql - 这可以在 Oracle SQL 中计算 p 值吗?
- python-3.x - 如何将 python FTP 服务器设为 PUBLIC?
- python - 如何检查 json 列表中是否有属性?如果没有我该如何添加它只在缺少的地方?
- if-statement - 有没有办法使用 Liquid 和条件语句根据当前页面的名称设置 CSS 类?
- ruby-on-rails - 在 for 循环中执行 mongo find 会导致它崩溃吗?
- sql - 复制行和另一个表中的依赖行,以及另一个表中的依赖行等
- javascript - 如何编写正确缩进方案代码的 JavaScript 函数?