以前、Python版AWSコマンドラインツールをCentOS6で使ってみたの記事でPython版の
AWSコマンドラインツールを紹介しましたがデフォルトでの出力がJSON形式となっていました。
# aws --region=ap-northeast-1 ec2 describe-instances
{
...
}
JSONでの出力は扱い辛そうに思いますが、下記のjqというプログラムを利用することで簡単に出力を
調整することができるようになります。
基本的にはソースからビルドしてインストールするのですが、良い機会なので下記のようにSPECファイルを
作成してRPMからインストールしてみました。
%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"