AWS Copilot插件文件中如何引用VPC及其他环境资源?
AWS Copilot 插件资源引用问题解答
1. 引用VPC ID的方法
Copilot部署环境时会自动创建VPC,并将其ID以导出变量的形式暴露,你可以在插件的CloudFormation模板中通过!ImportValue引用该变量:
VpcId: !ImportValue ${COPILOT_ENV_NAME}-VpcId
其中COPILOT_ENV_NAME是Copilot内置的环境名称参数,会自动替换为当前部署的环境名。
修改后的安全组脚本示例:
SGPostgresDb: Type: AWS::EC2::SecurityGroup Properties: GroupName: sg-pgdb GroupDescription: Allows only postgres traffic VpcId: !ImportValue ${COPILOT_ENV_NAME}-VpcId SecurityGroupIngress: - IpProtocol: tcp FromPort: 5432 ToPort: 5432 CidrIp: 0.0.0.0/0
2. 引用manifest.yml中定义的元素
Copilot会将manifest.yml中的配置自动注入到环境栈的CloudFormation参数中,直接用!Ref即可引用对应参数:
- 环境名称:直接引用内置参数
COPILOT_ENV_NAME - 自定义参数:如果在
manifest.yml中定义了parameters或variables,比如:
在插件模板中可以用# manifest.yml parameters: DBInstanceClass: db.t3.micro!Ref DBInstanceClass引用该值 - 其他manifest配置:比如VPC的CIDR块等,Copilot也会生成对应参数,可通过
!Ref直接调用
3. 引用Copilot自动创建的其他资源
copilot env deploy创建的互联网网关、子网、路由表等资源,Copilot都会生成对应的导出变量,用!ImportValue即可引用:
- 公网子网ID列表:
!ImportValue ${COPILOT_ENV_NAME}-PublicSubnetIDs - 私有子网ID列表:
!ImportValue ${COPILOT_ENV_NAME}-PrivateSubnetIDs - 互联网网关:
!ImportValue ${COPILOT_ENV_NAME}-InternetGateway - 公网路由表:
!ImportValue ${COPILOT_ENV_NAME}-PublicRouteTable - 私有路由表:
!ImportValue ${COPILOT_ENV_NAME}-PrivateRouteTable
内容的提问来源于stack exchange,提问作者fade2black
相关产品推荐
相关产品推荐

