使用AWS CLI修改ALB HTTP监听器默认动作为HTTPS跳转报错如何解决
AWS CLI配置ALB HTTP监听器重定向HTTPS的正确方法
你遇到的参数解析报错,核心原因是Shell默认会解析#{}这类特殊符号,同时未加引号包裹的嵌套配置结构被CLI识别为断裂的参数,导致解析失败。
方案1:短格式参数(加引号避免转义)
Linux/Mac Bash环境直接用单引号包裹整个--default-actions的参数内容,阻止Shell转义#{}占位符:
aws elbv2 modify-listener \ --listener-arn $LISTENER_ARN \ --default-actions 'Type=redirect,RedirectConfig={Protocol=HTTPS,Port=443,Host=#{host},Path=#{path},Query=#{query},StatusCode=HTTP_301}'
如果是Windows CMD/PowerShell环境,请把外层的单引号替换为双引号。
方案2:JSON格式参数(兼容性更强,不易出错)
如果参数比较复杂,推荐直接传JSON格式的配置,完全避免格式解析问题:
aws elbv2 modify-listener \ --listener-arn $LISTENER_ARN \ --default-actions '[ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ]'
补充说明
- 示例中用
HTTP_301是永久重定向,若需要临时重定向可替换为HTTP_302 - 原路径如果不需要额外加前缀,
Path参数直接填#{path}即可,不要额外加/,避免重定向后出现双斜杠的异常路径 - 如果你需要修改重定向后的路径、域名等配置,直接替换对应位置的
#{xxx}占位符即可,比如把Host字段改成固定域名example.com就可以实现所有请求重定向到固定域名的HTTPS服务
内容的提问来源于stack exchange,提问作者Navi
相关产品推荐
相关产品推荐

