Je souhaite répertorier les adresses IP publiques de mes instances EC2 à l'aide de Bash, séparées par un délimiteur (espace ou nouvelle ligne).
J'ai essayé de diriger la sortie vers jq avec aws ec2 describe-instances | jq
, mais ne semble pas isoler uniquement les adresses IP.
Cela peut-il être fait par aws
seul, en spécifiant des arguments à jq
, ou quelque chose d'autre entièrement?
Directement à partir du aws cli :
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].PublicIpAddress" \
--output=text
Requête pour chaque adresse IP publique et la balise de nom, gestion lorsque le nom n'est pas défini
aws ec2 describe-instances --filter "Name = instance-state-name, Values = running" --query "Reservations []. Instances []. [PublicIpAddress, Tags [? Key == ' Nom ']. Valeur | [0]] "- texte de sortie
La commande ci-dessous répertorie les adresses IP de toutes vos instances EC2 en cours d'exécution
aws ec2 describe-instances | grep PublicIpAddress | grep -o -P "\d+\.\d+\.\d+\.\d+" | grep -v '^10\.'
J'espère que cela répond à votre question.
Vous pouvez utiliser métadonnées d'instance pour pouvoir exécuter la commande suivante à partir de l'instance ec2:
curl http://169.254.169.254/latest/meta-data/public-ipv4
et il vous donnera l'IP publique de l'instance. Si vous voulez l'IP privée, vous exécuterez
curl http://169.254.169.254/latest/meta-data/local-ipv4
aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"
Voir: http://docs.aws.Amazon.com/cli/latest/userguide/controlling-output.html