Bashを使用してEC2インスタンスのパブリックIPアドレスを区切り文字(スペースまたは改行)で区切って一覧表示したい。
出力をaws ec2 describe-instances | jq
で jq にパイプしようとしましたが、IPアドレスだけを分離することはできないようです。
これはaws
に引数を指定するjq
のみ、または他の完全な方法で実行できますか?
aws cli から直接:
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].PublicIpAddress" \
--output=text
Nameが設定されていない場合の処理、各PublicIPaddressとNameタグのクエリ
aws ec2 describe-instances --filter "Name = instance-state-name、Values = running" --query "Reservations []。Instances []。[PublicIpAddress、Tags [?Key == '] Name ']。Value | [0]] "-出力テキスト
以下のコマンドは、実行中のすべてのEC2インスタンスのIPアドレスをリストします
aws ec2 describe-instances | grep PublicIpAddress | grep -o -P "\d+\.\d+\.\d+\.\d+" | grep -v '^10\.'
それがあなたの質問に答えることを願っています。
instance metadata を使用して、ec2インスタンスから次のコマンドを実行できます。
curl http://169.254.169.254/latest/meta-data/public-ipv4
インスタンスのパブリックIPが提供されます。プライベートIPが必要な場合は、実行します
curl http://169.254.169.254/latest/meta-data/local-ipv4
aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"
参照: http://docs.aws.Amazon.com/cli/latest/userguide/controlling-output.html