AWS cliでローカルからEC2の情報を取得してみる
AWS cliでローカルからEC2の情報を取得してみる:
最近、今更ながらAWSに入門して色々触ってます。
今回はAWS cliを使ってローカルからEC2の情報を取得するための手順をまとめました。
AWS公式によると、
要は、コマンドライン上からAWSのサービスを使えるようにするヤツです。
下記の公式ドキュメントを参考に、自身のpcにAWS cliを扱えるようにする。
macOS で AWS Command Line Interface をインストールする
homebrew経由でもできる。
自身のpcからAWSにアクセスしてリソースを取得するために、IAMのアクセスキーを発行する。
下記の公式ドキュメントを参考に、IAMのアクセスキーを発行する。
アクセスキーの管理 (コンソール)
下記のコマンドを実行すると、アクセスキーなどを聞かれるので、先ほど取得した情報を入れる。
(例)
上記のコマンドを実施すると、下記2つのファイルが作成される。
AWSからデータ取得した際のjsonをいい感じに整形してくれるヤツをインストールする。
基本形はコレ
上記を実行するとこんな感じのjsonが返される。
データは超長い&不要なデータも含まれているので、以降でデータのフィルターやフォーマットを調整する。
オプションでフィルターをつけてみる。
一つの設定に対して、
jqを使って取得した後のデータを整形してみる。
今回は
返されるデータの例
セットアップがかなり簡単だった。
今回はjson形式のデータが返ってくるところまでしかやってないけど、スクリプトとか組んで定期的にスプレッドシートの情報を更新するとかできそう。
最近、今更ながらAWSに入門して色々触ってます。
今回はAWS cliを使ってローカルからEC2の情報を取得するための手順をまとめました。
AWS cliとは
AWS公式によると、AWS CLI は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。最小限の設定で、使い慣れたターミナルプログラムのコマンドプロンプトから、ブラウザベースの AWS マネジメントコンソール で提供される機能と同等の機能の使用を開始できます。とのこと。
要は、コマンドライン上からAWSのサービスを使えるようにするヤツです。
セットアップ
AWS Command Line Interface をインストールする
下記の公式ドキュメントを参考に、自身のpcにAWS cliを扱えるようにする。macOS で AWS Command Line Interface をインストールする
homebrew経由でもできる。
$ brew doctor $ brew update $ brew install awscli $ aws --version aws-cli/1.16.81 Python/2.7.10 Darwin/17.6.0 botocore/1.12.71
IAMのアクセスキーを発行する
自身のpcからAWSにアクセスしてリソースを取得するために、IAMのアクセスキーを発行する。下記の公式ドキュメントを参考に、IAMのアクセスキーを発行する。
アクセスキーの管理 (コンソール)
pc側の設定
下記のコマンドを実行すると、アクセスキーなどを聞かれるので、先ほど取得した情報を入れる。$ aws configure
$ aws configure AWS Access Key ID [None]: xxxxx AWS Secret Access Key [None]: xxxxx Default region name [None]: ap-northeast-1 Default output format [None]: json
- ~/.aws/credentials
- ~/.aws/config
jqコマンドのインストール
AWSからデータ取得した際のjsonをいい感じに整形してくれるヤツをインストールする。$ brew doctor $ brew update $ brew install jq
AWSからデータ取得
EC2
コマンド
基本形はコレ$ aws ec2 describe-instances
データは超長い&不要なデータも含まれているので、以降でデータのフィルターやフォーマットを調整する。
{ "Reservations": [ { "Instances": [ { "Monitoring": { "State": "enabled" }, ....
一つの設定に対して、
Name=hoge, Values=fuga
のセットで指定できる。# 起動中のインスタンスだけ取得する $ aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" # 起動中のインスタンスかつインスタンスサイズがt2.midiumのインスタンスだけを取得する $ aws ec2 describe-instances --filter "Name=instance-state-name,Values=running, Name=instance-type,Values=t2.medium"
今回は
InstanceId, InstanceType, PublicIpAddress, Placement
だけ返すようにする。$ aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq '.Reservations[].Instances[] | {InstanceId, InstanceType, PublicIpAddress, Placement}'
{ "InstanceId": "i-xxxxxxxx", "InstanceType": "m3.medium", "PublicIpAddress": "0.0.0.0", "Placement": { "Tenancy": "default", "GroupName": "Fuga", "AvailabilityZone": "ap-northeast-1c" } }
所感
セットアップがかなり簡単だった。今回はjson形式のデータが返ってくるところまでしかやってないけど、スクリプトとか組んで定期的にスプレッドシートの情報を更新するとかできそう。
コメント
コメントを投稿