如何使用CloudFormation获取负载均衡LB的DNS名称
CloudFormation输出负载均衡DNS名称实现方法
完全可以实现,你只需要在CloudFormation模板的Outputs段落引用负载均衡资源的DNSName返回属性即可,以下是具体配置示例:
1. 模板配置示例
针对ALB/NLB(v2版负载均衡,资源类型为AWS::ElasticLoadBalancingV2::LoadBalancer)
Resources: # 你的负载均衡资源定义,此处逻辑名为MyLoadBalancer,可自定义 MyLoadBalancer: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: # 此处替换为你实际的LB配置参数 Scheme: internet-facing Subnets: - subnet-xxxx1 - subnet-xxxx2 SecurityGroups: - sg-xxxxxx Outputs: LoadBalancerDNSName: Description: 负载均衡公网/内网DNS访问地址 Value: !GetAtt MyLoadBalancer.DNSName # 可选配置:如果需要跨CloudFormation栈引用该值,可添加Export段 # Export: # Name: !Sub ${AWS::StackName}-LBDNS
针对经典负载均衡CLB(资源类型为AWS::ElasticLoadBalancing::LoadBalancer)
配置逻辑和上述一致,仅资源类型有差异,Outputs段引用逻辑名+DNSName属性即可生效。
2. 获取输出值的方式
- 控制台获取:栈部署完成后,在CloudFormation控制台对应栈的「输出」标签页即可直接查看该DNS值
- CLI获取:执行以下命令直接提取返回值
aws cloudformation describe-stacks --stack-name 替换为你的栈名 --query "Stacks[0].Outputs[?OutputKey=='LoadBalancerDNSName'].OutputValue" --output text
注意事项
!GetAtt后跟随的负载均衡逻辑名必须和Resources段定义的LB逻辑名完全一致,拼写错误会导致栈部署失败- 内网LB输出的DNS为内网解析地址,仅对应VPC内可访问;公网LB输出的DNS为公网可访问地址
内容的提问来源于stack exchange,提问作者DlekaShelHaHaim
相关产品推荐
相关产品推荐

