AWS поддерживает несколько целевых групп для каждого прослушивателя ALB

Я пытаюсь создать прослушиватель для своего AWS ALB и прикрепить к нему две мои целевые группы с помощью команды create-listener (AWS CLI), но возникают проблемы с созданием прослушивателя с этими двумя целевыми группами.

При создании слушателя из Консоли 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}]}}]')

Произошла ошибка (ValidationError) при вызове операции CreateListener: '$ {first_tg_arn}' не является допустимым ARN целевой группы

Выше были прикреплены оба способа выполнения команды (с жестко запрограммированными ARN и с использованием переменных ARN). введите описание изображения здесь

В чем может быть проблема? Спасибо.


person Yuval Podoksik    schedule 04.07.2020    source источник
comment
Где вы выполняете команду? Windows (PowerShell, cmd), Mac, Linux (какая оболочка)?   -  person John Rotenstein    schedule 05.07.2020
comment
Это сценарий оболочки, запускаемый из Windows.   -  person Yuval Podoksik    schedule 05.07.2020
comment
Внутри JSON вам нужно будет заключить ARN в кавычки и, возможно, также числа. В худшем случае вы можете предоставить JSON в файле. См. Пример: aws-cli: awscli / примеры / elbv2 / create-rule.rst | Фосси   -  person John Rotenstein    schedule 05.07.2020


Ответы (1)


Ваша проблема связана с расширением переменных Linux, а не с использованием AWS CLI.
В вашей команде, которая не работает, вы используете одинарную кавычку ', которая не расширяет переменные до их значения.
Чтобы раскрыть переменные, вам необходимо использовать двойные кавычки " или вообще не использовать кавычки, как вы это делали во втором примере.

person Azize    schedule 04.07.2020
comment
Не сработало, вообще без кавычек Я получаю сообщение об ошибке: Ошибка синтаксического анализа параметра '--default-actions': Недействительный JSON: [{Тип: с двойными кавычками, я получаю сообщение об ошибке: Ожидается, что имя свойства заключено в двойные кавычки : строка 1 столбец 3 (символ 2) - person Yuval Podoksik; 04.07.2020
comment
Попробуйте использовать двойные кавычки снаружи и одинарные кавычки внутри. - person Azize; 05.07.2020