首页 > 解决方案 > AWS 支持每个 ALB 侦听器的多个目标组

问题描述

我正在尝试为我的 AWS ALB 创建一个侦听器,并使用“create-listener”命令 (AWS CLI) 将我的 2 个目标组附加到该侦听器,但是在使用这 2 个目标组创建侦听器时遇到问题。

从 AWS 控制台创建侦听器并附加两个目标组时,它按预期工作,或者使用目标组的硬编码 arns 和上述语法,它可以工作:

listener=$(aws elbv2 create-listener --load-balancer-arn $lb_arn --protocol HTTP --port $http_external_port --default-actions '[{"Type": "forward", "Order": 1, "ForwardConfig": {"TargetGroups": [{"TargetGroupArn": "HARDCODED_FIRST_TG_ARN", "Weight": 50}, {"TargetGroupArn": "HARDCODED_SECOND_TG_ARN", "Weight": 50}]}}]')

但是,当使用 ARN 作为变量时(有效) - 'create-listener' 命令失败并显示上述错误消息:

first_tg_arn=$(aws elbv2 describe-target-groups --names $first_tg_name --query "TargetGroups[*][TargetGroupArn]" --output text)
second_tg_arn=$(aws elbv2 describe-target-groups --names $second_tg_name --query "TargetGroups[*][TargetGroupArn]" --output text)

listener=$(aws elbv2 create-listener --load-balancer-arn $lb_arn --protocol HTTP --port $http_external_port --default-actions '[{"Type": "forward", "Order": 1, "ForwardConfig": {"TargetGroups": [{"TargetGroupArn": "${first_tg_arn}", "Weight": 50}, {"TargetGroupArn": "${second_tg_arn}", "Weight": 50}]}}]')

调用 CreateListener 操作时发生错误 (ValidationError):“${first_tg_arn}”不是有效的目标组 ARN

上面附加了运行命令的两种方式(使用硬编码的 ARN 和使用 ARN 变量)。 在此处输入图像描述

可能是什么问题呢?谢谢你。

标签: amazon-web-servicesaws-cliaws-load-balanceraws-elb

解决方案


您的问题是关于 Linux 变量扩展,而不是关于 AWS CLI 的使用。
在您的命令失败时,您使用的是单引号',它不会将变量扩展为其值。
要扩展变量,您需要使用双引号"或根本不使用引号,就像您在第二个示例中所做的那样。


推荐阅读