AWS CLIを使ってTagの値のみを取得する
AWS CLIを使って、以下のように割り当てられたインスタンスのTagの値のみ(今回はWordPress)を取得します。
今回はAmazon Linuxを使うので、AWS CLIのインストール方法は割愛します。
# Amazon Linux 2013.03に入っているデフォルトのaws-cliを使いました。バージョンは以下です。
$ aws --version aws-cli/0.9.3 Python/2.6.8 Linux/3.4.43-43.43.amzn1.x86_64
#バージョンが異なると、オプションの指定が異なる可能性があります。
まず以下の環境変数を設定します。
export AWS_DEFAULT_REGION=ap-northeast-1 export AWS_CREDENTIAL_FILE=/opt/aws/credential-file
credential-fileを作成します。
$ sudo cp /opt/aws/credential-file-path /opt/aws/credential-file $ sudo vi /opt/aws/credential-file AWSAccessKeyId=XXXXXXXXXXXXXXXXXX AWSSecretKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
以下コマンドを実行して動作確認。
$ aws ec2 describe-instances { "Reservations": [ { "OwnerId": "000000000000", "ReservationId": "r-883ce98b", "Groups": [ (以下省略)
ちゃんと出力されることを確認。
$ aws ec2 describe-tags { "ResponseMetadata": { "RequestId": "b98ff86b-24e7-4950-9161-c864e11c20a7" }, "Tags": [ { "ResourceType": "snapshot", "ResourceId": "snap-6d0d4c4d", "Key": "Name", "Value": "dev-urandom-1G" }, { "ResourceType": "security-group", "ResourceId": "sg-958dff94", "Key": "aws:cloudformation:stack-name", "Value": "WordpressSite" }, (以下省略)
通常describe-tagsを実行すると、全部のTagが出てきてしまうので、絞り込みをします。
$ aws ec2 describe-tags --filter '{"name":"resource-id","values":"i-06672203"}' { "ResponseMetadata": { "RequestId": "8c60bc2e-16bc-4882-8bfb-de5889eb84c3" }, "Tags": [ { "ResourceType": "instance", "ResourceId": "i-06672203", "Key": "Name", "Value": "WordPress" } ] }
これをさらに絞り込むためにjqを使います。jqは入力内容を元に出力を絞り込むためのプログラムです。
まずは、jqをインストール。
$ sudo yum install jq
そして、上記出力をjqを使って絞り込みます。
$aws ec2 describe-tags --filter '{"name":"resource-id","values":"i-06672203"}' | jq '.Tags[] | .Value' "WordPress"
以上で、WordPressの値のみを抽出することができました!
もちろん、Name以外のTagも取得できますので、いろいろ使いまわせそうですね。