从CloudFormation迁移至AWS CDK:创建ELB监听器默认动作遇阻
解决方案:ELB监听器默认重定向至443及ContentType报错修复
一、正确设置80端口监听器的默认重定向动作
直接在创建ApplicationListener时通过default_action参数配置,这是最简洁的方式:
from aws_cdk import aws_elasticloadbalancingv2 as elbv2 # 假设已创建ApplicationLoadBalancer实例load_balancer http_listener = elbv2.ApplicationListener( self, "HttpListener", load_balancer=load_balancer, port=80, default_action=elbv2.ListenerAction.redirect( protocol="HTTPS", port="443", permanent=True # 可选,设置为永久重定向(301),默认是临时重定向(302) ) )
二、修复ContentType报错问题
你遇到的AttributeError是因为CDK版本更新后,ContentType枚举不再暴露在aws_elasticloadbalancingv2模块中。直接传入MIME类型字符串即可替代原来的枚举值:
# 示例:固定响应动作的正确写法 listener80.add_action('DefaultAction', action=elbv2.ListenerAction.fixed_response( status_code=200, content_type='text/plain', # 直接用字符串替代枚举 message_body="OK" ), priority=1 # 优先级设为1,确保作为默认动作执行 )
关键说明
default_action是监听器实例化时的核心参数,用于定义无匹配规则时的默认行为,优先使用这种方式配置重定向,比add_action更直观。- 若使用
add_action添加默认动作,需设置priority=1(最低优先级),避免被其他高优先级规则覆盖。
内容的提问来源于stack exchange,提问作者Trevor Griffiths
相关产品推荐
相关产品推荐

