AWS CloudFormation:无法找到要分配给 RDS 实例的现有 SG

AWS CloudFormation: Unable to find existing SG to assign to RDS instance

从一个 template/stack:

创建并导出 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 not found: sg-0983409kdje5999

Update:这个好像不是导出值相关的问题;由于某种原因,将特定的 SG 分配给我的 RDS 实例失败了(我明确使用了 SG 名称,但这次我得到了上面的 "not found" 错误名称而不是 ID)。

由于某种原因,找不到 SG。

由于您使用的是 AWS::EC2::SecurityGroup,因此您需要使用 属性 VPCSecurityGroups 来指定导入的安全组,而不是使用 DBSecurityGroups。它失败了,因为您指定的 SG 不是 DBSecurityGroup。

有两种方法可以为 RDS 实例设置安全组here:

  1. DBsecurityGroups : 安全组类型 AWS::RDS::DBSecurityGroup。这是保护 RDS 的旧方法 实例。

  2. VPCSecurityGroups: 安全组类型 AWS::EC2::SecurityGroup 允许您指定 VPC 安全性 组来保护您的 RDS 实例。