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形式のデータが返ってくるところまでしかやってないけど、スクリプトとか組んで定期的にスプレッドシートの情報を更新するとかできそう。
コメント
コメントを投稿