以前、Python版AWSコマンドラインツールをCentOS6で使ってみたの記事でPython版の
AWSコマンドラインツールを紹介しましたがデフォルトでの出力がJSON形式となっていました。

# aws --region=ap-northeast-1 ec2 describe-instances
{
...
}

JSONでの出力は扱い辛そうに思いますが、下記のjqというプログラムを利用することで簡単に出力を
調整することができるようになります。

jq

基本的にはソースからビルドしてインストールするのですが、良い機会なので下記のようにSPECファイルを
作成してRPMからインストールしてみました。

suz-lab-centos-ami/share/rpmbuild/SPECS/jq.spec at master

%define version 1.2

Summary: Command-line JSON processor
Name : jq
Version: %{version}
Release: 0%{?dist}.suzlab_1
Source0: jq-%{version}.tar.gz
URL : https://github.com/stedolan/jq
License: BSD
Group : Applications/System

%description
jq is a command-line JSON processor

%prep

%setup

%build
echo "Building in: "$(pwd)""
make

%install
echo "Installing to: "${RPM_BUILD_ROOT}""
install -d -m 0755 ${RPM_BUILD_ROOT}/usr/bin
install -m 0755 jq ${RPM_BUILD_ROOT}/usr/bin

%clean
rm -rf ${RPM_BUILD_ROOT}

%files
%defattr(-,root,root)
%{_bindir}/jq

%changelog
* Sat Jan 12 2013 Hiroyasu Suzuki - 1.2-0_1
- Initial Release

%pre

%post

○RPM作成前の準備

ビルドに必要なパッケージをインストールします。

# yum -y install make flex bison gcc
...

SPECファイルの取得

# cd /opt/suz-lab/
# rm -rf var/log/syslog/all.log
# git pull
...

※今回はSUZ-LAB AMI上での作業なのでgit pullしてます。

RPM作成時の設定ファイルの作成

# cat .rpmmacros
%_topdir /opt/suz-lab/share/rpmbuild

○RPMの作成

ソースファイルの準備

# cd /opt/suz-lab/share/rpmbuild/SOURCES/
...
# curl -OL https://github.com/stedolan/jq/archive/jq-1.2.tar.gz
...
# tar xvzf jq-1.2.tar.gz
jq-jq-1.2/
...
# mv jq-jq-1.2 jq-1.2
# tar cvzf jq-1.2.tar.gz jq-1.2

※展開時のディレクトリがjq-1.2となるようにしています。

毎回利用しているrpmbuild -baになります。

# cd /opt/suz-lab/share/rpmbuild/SPECS/
# rpmbuild -ba jq.spec
...

○RPMのインストールと確認

毎回利用しているrpm -Uvhになります。

# cd /opt/suz-lab/share/rpmbuild/RPMS/x86_64
# rpm -Uvh jq-1.2-0.el6.suzlab_1.x86_64.rpm
...

jqを利用し、最初のコマンド(EC2情報を取得)からインスタンスIDのみ抜き出してみます。

# aws --region=ap-northeast-1 ec2 describe-instances 
> | jq ' .reservationSet | .[] | .instancesSet | .[] | .instanceId '
"i-aaaaaaaa"
"i-bbbbbbbb"
"i-cccccccc"
"i-dddddddd"

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら