【发布时间】:2026-01-12 03:35:01
【问题描述】:
我有一个将 MySql 数据库和一些资源部署到 AWS 的 CF。我希望脚本是通用的,并且应该能够将它用于不同的环境。对于其中一个资源(主数据库),我有一个不同的安全组配置,它是特定于环境的。我为每个有条件的环境创建安全组,称为 VaultSecurityGroupInEnv1、VaultSecurityGroupInEnv2 等。有一个地图可以保存每个环境的安全组的名称。这是我的配置:
Mappings:
RegionMap:
environment1:
VaultSG: VaultSecurityGroupInEnv1
environment2:
VaultSG: VaultSecurityGroupInEnv2
Resources:
VaultSecurityGroupInEnv1:
Condition: IsEnv1Environment
VaultSecurityGroupInEnv2:
Condition: IsEnv2Environment
MasterDB:
Type: AWS::RDS::DBInstance
Properties:
VPCSecurityGroups:
- !ImportValue DbSgId
- !Sub
- '${vGroup}'
- vGroup: !FindInMap
- RegionMap
- !Ref Environment
- VaultSG
我收到以下错误:
Invalid security group , groupId= vaultsecuritygroupinF.groupid, groupName=. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue;
!Sub 的输出被检索并解析为名称字符串,而不是资源。使用 !Ref vaultsecuritygroupinF.GroupId 可以正常工作。知道如何正确使用地图和子吗?
谢谢
【问题讨论】:
-
VaultSG是什么?它是 SG 的名称还是 group-id? -
是SG的名字
-
你能提供更完整的例子吗?它使您想要实现的目标感到困惑。
-
我认为如果您使用格式正确且完整的代码示例编辑您的问题会更好。
-
是的,将编辑问题
标签: mysql templates amazon-cloudformation amazon-rds aws-security-group