Si quelqu'un vient ici à la recherche d'une solution purement bash.
Utiliser jq pour filtrer et analyser la réponse de la CLI AWS :
aws elb describe-load-balancers | jq -r '.LoadBalancerDescriptions[] | select(.Instances[].InstanceId == "") | .LoadBalancerName '
Aussi dans aws-codedeploy-samples, ils définissent cette fonction dans common_functions.sh. Je ne l'ai pas testé car j'utilise ASG, mais je suppose que cela fonctionnera
# Usage: get_elb_list
#
# Trouve tous les ELB auxquels cette instance est enregistrée. Après l'exécution, la variable
# "INSTANCE_ELBS" contiendra la liste des load balancers pour l'instance donnée.
#
# Si l'ID d'instance donné n'est pas trouvé enregistré sur des ELB, la fonction renvoie une valeur non nulle
get_elb_list() {
local instance_id=$1
local elb_list=""
local all_balancers=$($AWS_CLI elb describe-load-balancers \
--query LoadBalancerDescriptions[*].LoadBalancerName \
--output text | sed -e $'s/\t/ /g')
for elb in $all_balancers; do
local instance_health
instance_health=$(get_instance_health_elb $instance_id $elb)
if [ $? == 0 ]; then
elb_list="$elb_list $elb"
fi
done
if [ -z "$elb_list" ]; then
return 1
else
msg "Got load balancer list of: $elb_list"
INSTANCE_ELBS=$elb_list
return 0
fi
}
0 votes
Avez-vous consulté la documentation de l'API?
1 votes
@DrewKhoury, oui j'ai regardé le service de métadonnées et la documentation mais je n'ai rien trouvé de pertinent.
0 votes
Curieux de savoir pourquoi vous voudriez faire cela. S'il s'agit simplement d'identifier à quelle application une instance est associée, l'étiquetage pourrait être une meilleure approche.