Мы запускаем кластер ECS за ELB (для конкретных целей).
У меня есть процесс, который позволяет мне узнать, какой кластер ECS связан с ALB, запросив ALB и отслеживая результаты через целевую группу, а затем экземпляры:
Вот сценарий bash:
ELB_NAME=$(aws route53 list-resource-record-sets --hosted-zone-id <Zone-ID> | jq -r --arg URL "$URL"'.ResourceRecordSets[]|select(.Name==$URL)|.AliasTarget.DNSName')
ELB_NAME=$(echo $ELB_NAME | cut -f 2- -d "." | rev | cut -f 2- -d "." | rev)
ELB_ARN=$(aws elbv2 describe-load-balancers | jq -r --arg ELB_NAME "$ELB_NAME" '.LoadBalancers[]|select((.DNSName|ascii_downcase)==$ELB_NAME)|.LoadBalancerArn')
TG_ARNS=$(aws elbv2 describe-target-groups | jq -r --arg ELB_ARN "$ELB_ARN" '.TargetGroups[]|select(.LoadBalancerArns[]==$ELB_ARN)|.TG_ARN=$(echo $TG_ARNS | cut -f 1 -d " ")
INSTANCE_ID=$(aws elbv2 describe-target-health --target-group-arn $TG_ARN | jq -r '.TargetHealthDescriptions[].Target.Id' | head -n 1)
CLUSTER=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID | jq -r '.Reservations[].Instances[].Tags[]|select(.Key=="aws:cloudformation:stack-name")|.Value' | cut -f 2 -d "-")
Проблема заключается в том, что, когда нет запущенных экземпляров, связанных с кластером ECS, я больше не могу запрашивать их для тега, который возвращает имя стека Cloudformation, запрос целевых объектов из целевой группы пуст.
Как я могу использовать AWS API, чтобы я мог определить, какой кластер ECS будет нацелен на ALB, если у него были запущенные экземпляры?