从一个模板/堆栈创建并导出SG:
Resources
RDSSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: "sg-name"
Outputs:
SGRDS:
Description: security group of rds instances
Value: !Ref RDSSecurityGroup
Export:
Name: SGRDS
但是,尽管在尝试使用另一个模板(和堆栈)在RDS创建中使用此SG时创建了导出
Resources
MYRDS:
Type: AWS::RDS::DBInstance
Properties:
DBSecurityGroups:
- !ImportValue SGRDS
它失败并出现以下错误:
未找到DBSecurityGroup:sg-0983409kdje5999
更新:这似乎不是与导出值相关的问题;由于某种原因将特定的SG分配给我的RDS实例,无论是哪种方式都失败了(我明确地使用了SG名称,但是这次使用名称而不是id得到了上面的“not found”错误)。
由于某种原因,它无法找到SG。
由于您使用的是AWS::EC2::SecurityGroup
,因此需要使用属性VPCSecurityGroups
来指定导入的安全组,而不是使用DBSecurityGroups
。它失败是因为您指定的SG不是DBSecurityGroup。
有两种方法可以为RDS实例设置安全组,其中描述了here:
AWS::RDS::DBSecurityGroup
类型的安全组。这是保护RDS实例的旧方法。AWS::EC2::SecurityGroup
类型的安全组,允许您指定VPC安全组以保护RDS实例。