EC2 API Tools for Windows

記事タイトルとURLをコピーする
みなさん、こんにちは
テクニカルチームの宮澤です。
 
今回は、Windowsに"EC2 API Tools"を導入して、API を利用してインスタンスを立ち上げたいと思います。 

Amazon EC2 API Toolsとは?

Amazon Web ServicesのAmazon EC2をAPIで操作するためのコマンドラインツールです。
私達がよく使っているManagement Consoleは、裏でAPIを実行して動作をしています。

1.準備

Amazon EC2 API Tools(以下API Tools)をインストールする為に、必要な以下のものを用意します。
  • AWSアカウントID
  • アクセスキーID
  • シークレットアクセスキー
  • X509証明書
  • 秘密鍵ファイル
Management Consoleを利用している場合、右上のプルダウンメニューから、"Security Credential"を選択することで、
必要な情報が取得できます。

2.インストール

Ⅰ.ダウンロード
API ToolsをAWSの公式ページからダウンロードします。
また、API ToolsはJavaにより動作しているためJavaをインストールする必要があります。
こちらのリンクをたどると以下のサイトに移動しますので、そこからJavaをインストールしてください。
Ⅱ.インストール
  • ダウンロードしたAPI Toolsを"C:"に展開します。
  • 展開したフォルダにアクセスキーとシークレットアクセスキーを配置しておきます。
  • 環境変数の設定
ファイルを展開しただけではWindowsのコマンドプロンプトではコマンドを利用することができません。
そのため、以下のように環境変数を設定してコマンドを実行できるようにします。
Javaのインストールされているフォルダを指定 ※環境によって異なる場合があります。
C:>set JAVA_HOME=C:"Program Files (x86)Javajre7"
API Toolsのフォルダを指定
C:>set EC2_HOME=C:ec2-api-tools
API Toolsのコマンドが格納されているフォルダを指定
C:>set PATH=%PATH%;ec2-api-toolsbin
使用するリージョンを指定
C:>set EC2_URL=https://ec2.ap-northeast-1.amazonaws.com
利用するアカウントのアクセスキーとシークレットアクセスキーを指定
C:ec2-api-tools>set EC2_PRIVATE_KEY=%EC2_HOME%pk.pem
C:ec2-api-tools>set EC2_CERT=%EC2_HOME%cert.pem
  • バッチファイルの作成
環境変数をコマンドプロンプトで実行した場合、閉じてしまうと再度環境変数を設定しなければなりません。
その手間を省くために、環境変数設定のバッチファイルを作成します。
複数のAWSアカウント、リージョンを使っている場合は、個別に用意しておくと非常に便利です。
ファイル名は".bat"形式で作成します。
※リージョンは使用したいリージョンを記述してください。
※作成したバッチファイルはコマンドプロンプトのホームディレクトリに配置してください。

3.API Toolsの実行

  • バッチファイルの実行
コマンドプロンプトから、先ほど作成したバッチファイルを実行します。
バッチファイルを実行することで、環境変数が設定されます。
  • 動作確認
”ec2ver”とコマンドを実行し、バージョンが表示されればAPI Toolsが動いていると確認できます。

4.インスタンスの起動

ここからは実際にインスタンスを起動して使えるようにしたいと思います。
Ⅰ.キーペアの作成
  • キーペアの一覧を表示
キーペアを作成する際に同じ名前のキーは作成できないので、現在のキーペア一覧を取得し、確認します。
C:Userskei_miyazawa>ec2-describe-keypairs
  • キーペアの作成
今回はdemo_keyというキーペアを作成したいと思います。キーペアを作成する際にオプションを付けて、キーペアをローカルマシンに保存します。
C:Userskei_miyazawa>ec2-add-keypair demo_key | find /V "KEYPAIR" > %EC2_HOME%demo_key.pem
※ローカルに保存したキーはインスタンスにログインする際に利用しますので大切に保管してください。 Ⅱ.セキュリティーグループの作成
  • セキュリティーグループの一覧を表示
ec2-describe-group
  • セキュリティーグループの作成
セキュリティーグループはdemo_sgを作成します。
ec2-add-group demo_sg 
  • セキュリティーグループの設定
セキュリティーグループで接続を許可するポートを指定します。
今回はICMPとHTTP、RDPを許可します。
ec2-authorize demo_sg -P icmp -t -1:-1 -s 0.0.0.0/0
ec2-authorize demo_sg -P tcp -p 80
ec2-authorize demo_sg -P tcp -p 3389 -s 202.215.74.59/32
Ⅲ.インスタンスの起動
  • 起動に利用するAMIを探す
以下のコマンドでAWS上にあるAMIの一覧を表示します。
ec2-describe-images
これではAMIが大量に表示され、見つけることが難しいので、以下のようにオプションやパイプコマンドで"find"を使い条件を絞って表示させることできます。
例1:Amazonの提供しているイメージからFedora8の32bitのイメージを探す。
ec2-describe-images --owner amazon | find "fedora-8-i386"
例2:自分のアカウントで作成したAMIを探すときは以下のようにします。
ec2-describe-images --owner アカウントナンバー | find "キーワード"
  • AMIからインスタンスを起動
先程探したWindowsAMI(ami-2ae95f2b)を利用して、インスタンスを起動したいと思います。
インスタンスを起動するために以下のコマンドを実行します。
ec2-run-instances ami-2ae95f2b
このようにオプション無しで起動すると、デフォルトのセキュリティーグループ、キーペアなし、smallインスタンスで起動してしまいます。
以下のように詳細を指定して起動することもできます。
ec2-run-instances AMI名 -g セキュリティーグループ -k キーペア -n 個数 -t インスタンスタイプ
Ⅳ.Elastic IPの割り当て
  • ElasticIPの一覧を表示
ec2-describe-addresses
  • Elastic IPの割り当て
ec2-associate-address -i インスタンスID Elastic IP
  • Elastic IPの取り外し
ec2-disassosiate-address Elastic IP
Ⅴ.インスタンスの停止、削除
  • インスタンスを停止する
ec2-stop-instances インスタンスID
  • インスタンスを削除する
ec2-terminale-instances インスタンスID

5.まとめ

実際にインストールを行い、利用してみると、Linuxと同様に動作をしました。
しかし、Tabの補完機能などが使えないところが残念な所です。
Windowsを使っていると、ついManagement Consoleを使ってしまいがちですが、ELB(Elastic Load Balancing)のSSL証明書の更新はELBのAPI Toolsを使わないと作業ができません。
このように、API Toolsを使う場面は必ず現れるので、入れておくに越したことはないと思います。
Amazonのクラウドを利用しているなら、この機会に”Windows”にAPI Toolsをインストールしてみてはいかがでしょうか。 ご参考までに、関連するコマンドをまとめた表を作成致しました。
内容 コマンド
リージョン一覧 ec2-describe-regions
キーペア一覧 ec2-describe-keypairs
キーペア作成 ec2-add-keypair KeyPair名
キーペア削除 ec2-delete-keypair KeyPair名
セキュリティーグループ一覧 ec2-describe-group
セキュリティーグループ作成 ec2-add-group セキュリティーグループ名
セキュリティーグループ削除 ec2-delete-group セキュリティーグループ名
AMIの一覧 ec2-describe-images
インスタンスの一覧 ec2-describe-instances
インスタンスの起動 ec2-run-instances AMI名
インスタンスStart ec2-start-instances インスタンスID
インスタンスStop ec2-stop-instances インスタンスID
インスタンスTerminate ec2-terminate-instances インスタンスID
Elastic IP一覧 ec2-describe-addresses
Elastic IP取り付け ec2-associate-address -i インスタンスID Elastic IP
Elastic IP取り外し ec2-disassosiate-address Elastic IP