前提・実現したいこと
AWS EC2のメタ情報や状態をjqコマンドで整形して表示させようとしています。
今回はうまくできていない部分だけのフォーカスして、
インスタンスIDと状態(ステータス)を整形して表示させたいと実現させたいです。
想像しているものは以下になります。
Terminal
1$ ec2_ls | jq -r '.[][].Instances[] ....<中略>.... | @tsv | column -t 2i-xxxxxxxxxxxxx stopped
前置き・できていることの整理
Terminal
1$ aws ec2 describe-instances --profile <プロフィール名>
これでEC2一覧の情報の全てのメタデータが出力されることは確認しています。
alias ec2_ls="aws ec2 describe-instances --profile <プロフィール名>"
以下では長くなるので、エイリアス登録してec2_lsと表記します。
また、ec2_lsで同じ出力がされること確認しています。
Terminal
1$ ec2_ls | jq -r '.Reservations[] | .Instances[] | .InstanceId' 2"i-xxxxxxxxxxxxx" 3$ ec2_ls | jq -r '.Reservations[] | .Instances[] | .State | .Name' 4"stopped"
インスタンスIDと状態をそれぞれで表示させることはできました。
これを以下のように一行でTSVで表示させたいです。
i-xxxxxxxxxxxxx stopped
発生している問題・エラーメッセージ
まず、思いつくままに実行した結果が以下になります。
Terminal
1$ ec2_ls | jq -r '.[][].Instances[] | .InstanceId, .State | .Name' 2jq: error (at <stdin>:109): Cannot index string with string "Name" 3$ ec2_ls | jq -r '.[][].Instances[] | [.InstanceId, .State | .Name]' 4jq: error (at <stdin>:109): Cannot index string with string "Name"
エラーになったので、配列[]にしてみたけど、同じ結果でした。
どちらも、Nameという最後の部分のエラーです。
このエラーを調べたところ --slurp で配列化することでエラーが解消するというブログを見つけたので試してみました。
Terminal
1$ ec2_ls | jq -r '.[][].Instances[] | .InstanceId, .State | .Name' --slurp 2jq: error (at <stdin>:109): Cannot index array with string "Instances"
今度はInstancesというより上位の部分でエラーとなってしまいました。
それぞれ、Object, Array, String...など型の不一致の問題だろうと思いつつ
ドツボにハマってしまっている気がして投稿しました。
まとめ
AWS EC2のメタ情報や状態をjqコマンドで整形し、インスタンスIDと状態(ステータス)を整形して表示させたい。
i-xxxxxxxxxxxxx stopped
以下のコマンドで実現できると思っていたがエラーとなっています。
Terminal
1$ aws ec2 describe-instances --profile <プロフィール名> | jq -r '.[][].Instances[] | .InstanceId, .State | .Name' 2jq: error (at <stdin>:109): Cannot index string with string "Name"
それぞれの項目は表示させることは実現できています。
Teminal
1$ ec2_ls | jq -r '.Reservations[] | .Instances[] | .InstanceId' 2"i-xxxxxxxxxxxxx" 3$ ec2_ls | jq -r '.Reservations[] | .Instances[] | .State | .Name' 4"stopped"
補足情報(FW/ツールのバージョンなど)
jqのバージョンは1.5です。
Terminal
1$ jq -help 2jq - commandline JSON processor [version 1.5]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/04/30 05:12