CDK/Python 如何获取CDK创建的负载均衡等资源的ARN
AWS CDK获取负载均衡ARN报错解决方案
问题根因
你遇到的报错由两个拼写及属性调用错误导致:
- 负载均衡逻辑ID大小写不匹配:你创建CfnLoadBalancer时传入的逻辑ID是
"LB"(大写B),但调用core.Fn.ref()时传入的是"Lb"(小写b),CloudFormation逻辑ID大小写敏感,因此无法找到对应资源。 - 目标组ARN属性调用错误:CfnTargetGroup不存在
listenerArn属性,需调用对应属性获取ARN。
修正方案
你可以直接通过CDK资源实例的内置属性获取ARN,无需手动写core.Fn.ref传入逻辑ID,避免拼写错误,修正后代码如下:
# 原负载均衡创建代码无需修改 lb = lbv2.CfnLoadBalancer(self, "LB", name = config.loadbalancer.name, scheme= "internet-facing", security_groups=[core.Fn.ref(config.loadbalancer.sgname)], subnets = [public_subnets[0],public_subnets[1]], type = config.loadbalancer.type ) # 修正后的监听器代码 lb_listeners= lbv2.CfnListener(self, "LBlisteners", default_actions = [{"Type":"forward","TargetGroupArn":target_groups.attr_target_group_arn, "Order" : 1}], load_balancer_arn = lb.ref )
注:如果你使用的是L2层级的TargetGroup构造(非
Cfn开头的L1构造),目标组ARN需替换为target_groups.target_group_arn。
内容的提问来源于stack exchange,提问作者AJR
相关产品推荐
相关产品推荐

