AWS cliでローカルからEC2の情報を取得してみる

AWS cliでローカルからEC2の情報を取得してみる:

最近、今更ながら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 
上記のコマンドを実施すると、下記2つのファイルが作成される。

  • ~/.aws/credentials
  • ~/.aws/config
以上でローカルからAWSに対してアクセスできるようになる! :innocent:


jqコマンドのインストール

AWSからデータ取得した際のjsonをいい感じに整形してくれるヤツをインストールする。

$ brew doctor 
$ brew update 
$ brew install jq 


AWSからデータ取得


EC2


コマンド

基本形はコレ

$ aws ec2 describe-instances 
上記を実行するとこんな感じのjsonが返される。

データは超長い&不要なデータも含まれているので、以降でデータのフィルターやフォーマットを調整する。

{ 
    "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" 
jqを使って取得した後のデータを整形してみる。

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


参考情報


AWS公式リファレンス


AWS cli


jqコマンド

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)