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

pka*_*mol 2 amazon-web-services amazon-rds aws-cloudformation

从一个模板/堆栈创建和导出 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
Run Code Online (Sandbox Code Playgroud)

但是,尽管在使用另一个模板(和堆栈)的 RDS 创建中尝试使用此 SG 时会创建导出

 Resources
   MYRDS: 
     Type: AWS::RDS::DBInstance
       Properties: 
       DBSecurityGroups:
        - !ImportValue SGRDS
Run Code Online (Sandbox Code Playgroud)

它失败并出现以下错误:

未找到 DBSecurityGroup:sg-0983409kdje5999

更新:这似乎不是与导出值相关的问题;出于某种原因将特定 SG 分配给我的 RDS 实例无论哪种方式都失败了(我明确使用了 SG 名称,但这次我收到了上述“未找到”错误,名称为名称而不是 id)。

由于某种原因,它无法找到 SG。

use*_*510 5

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

有两种方法来设置安全组被描述的RDS实例在这里

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

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