You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pulumi能否无需导入资源直接获取并更新?以AWS安全组为例

如何在不导入安全组的情况下,用Pulumi添加跨安全组的入站规则

你不需要导入整个database-sg就能实现需求——可以用Pulumi的aws.ec2.SecurityGroupRule资源,单独为DBA管理的安全组创建一条入站规则,关联你自己的ecs-sg。get_security_group只是读取现有资源的元数据,无法直接修改资源,但独立的规则资源可以在不接管整个安全组的前提下完成配置。

具体实现代码

保留你原有的ECS安全组创建逻辑,新增规则配置即可:

# 创建ECS服务安全组
ecs_sg = aws.ec2.SecurityGroup("ecs-sg",
     name="ECS Security Group",
     description="Security Group for managing ECS services",
     vpc_id=vpc.id,
     egress=[
       aws.ec2.SecurityGroupEgressArgs(
         protocol="-1",
         from_port=0,
         to_port=0,
         cidr_blocks=["0.0.0.0/0"]
       ),
     ]
)

# 获取DBA团队管理的数据库安全组元数据
database_sg = aws.ec2.get_security_group(id="sg-XXXXXXXXX")

# 为database-sg添加允许ecs-sg访问的入站规则
aws.ec2.SecurityGroupRule("ecs-to-db-ingress",
     type="ingress",
     from_port=5432,  # 替换为你的数据库实际端口(如MySQL用3306)
     to_port=5432,
     protocol="tcp",
     security_group_id=database_sg.id,  # 目标安全组ID
     source_security_group_id=ecs_sg.id  # 允许访问的源安全组ID
)

关键说明

  1. 权限要求:确保执行Pulumi的IAM角色拥有ec2:AuthorizeSecurityGroupIngress和ec2:RevokeSecurityGroupIngress权限,否则无法创建/删除这条规则。
  2. 资源边界:这条规则由你的Pulumi栈管理,但database-sg本身仍归DBA团队管控,他们修改其他规则不会影响你的配置;反之,你删除代码中的规则后,Pulumi会自动移除这条入站规则。
  3. 沟通协作:建议提前和DBA团队沟通这条规则的存在,避免他们误删后Pulumi自动重建引发的冲突。

内容的提问来源于stack exchange,提问作者Element Zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 22:58:28