Amazon EC2 API ToolsをインストールしてEC2インスタンスを起動する(&ログインするまで)
仕事でAmazon WebServices(AWS)をよく使っています。AWSで仮想サーバ(EC2インスタンス)を立ち上げたり、スナップショット(バックアップ)を作成して復元などが簡単にできるためサーバ構築などに大変便利ですね。 AWSのコンポーネント(EC2, RDS, ELBなど)を操作するのにGUI(Management Console)で操作するのですが、APIも提供されており、シェルスクリプト(コマンド)やPHP, Rubyなどのプログラムからも操作することができます。 今回はBashなどのシェル(コマンド)からEC2インスタンスを操作できるツールをインストールし、EC2インスタンスを起動してみます。
今回の目標
- Amazon EC2 API Tools をインストールする
- コマンドからEC2インスタンスを起動できるようにする
- EC2インスタンスにSSHログインできるようにする
サーバ環境
- CentOS 6.4
必要なパッケージのインストール
ファイルのダウンロード
ファイルの設置
どこに置いてもいいのですが、/awsというディレクトリを作成してそこに先ほどのツール郡を置きます。
パスの設定
コマンドが使えるようにパスを通します。
環境変数の設定
コマンドを実行するのに必要な環境変数を設定します。
AWS_ACCESS_KEY はAWSのAPIを利用するのに必要なアクセスキー、AWS_SECRET_KEY はシークレットキーです。 これらのキーはAWSのManagementConsoleから発行してください *1。
.bashrcを読みこめば完了です。
動作確認
EC2インスタンスが使えるリージョン(地域)を一覧表示させるコマンド(ec2-describe-regions)を実行します。
正しく設定されていれば、リージョンの一覧が表示されるはずです。
コマンドからEC2インスタンスを起動する
EC2インスタンスを設定し起動するには、ec2-run-instancesコマンドを使います。
AMIの選択
ec2-run-instancesコマンドを使うには、AMIから起動する必要があるため、どのAMIから起動するかを決めます。 すでにAMIを作成していて、そのAMIから起動したい場合は、そのAMI ID(ami-xxxxxxxx)を選択してください。 今回はAMIが無いので、Community AMIs を含めたAMIから探します。例としてamzn-ami-pv-2014.03.0.x86_64-ebs というAMIから起動することにします。AMI IDは、ami-a1bec3a0 です。
SecurityGroupの作成
SecurityGroupというファイアウォール(iptablesみたいなもの)を作成します。 今回はquick-startという簡単なSecurityGroupを作成しました。SSH(22番)ポートのみを許可しています。
Key Pairの作成
EC2インスタンスは公開鍵認証なので、Key Pairとよばれる秘密鍵を作成します。 今回はjicomanという名前で作成しました*2。
EC2インスタンスの起動
ようやくEC2インスタンスを起動します。
正しく実行されると、EC2インスタンスが起動します。 インスタンスID(i-b34a53b5)は後ほど、停止や削除に使います。
下記、オプションの解説です。
オプション | 説明 |
---|---|
--instance-count | 起動するEC2インスタンスの数 |
--group | EC2インスタンスを所属させるSecurityGroup名 |
--key | EC2インスタンスにSSHログインするためのKeyPair名 |
--instance-type | 起動するEC2インスタンスのインスタンスタイプ |
--instance-initiated-shutdown-behavior | EC2インスタンスを停止できるようにするかどうか |
--availability-zone | 起動するEC2インスタンスに所属させるアベイラビリティゾーン(AZ) |
--region | 起動するEC2インスタンスに所属させるリージョン |
EC2インスタンスが起動されると、ManagementConsoleで以下のように表示されます。
SSHログインする
起動したEC2インスタンスにログインしてみます。 デフォルトのユーザはec2-userです。
秘密鍵(.pem)のファイルパーミッションを変更
Key Pairを作成した時にダウンロードした秘密鍵(例としてjicoman.pem)のファイルパーミッションを変更します。 変更せず644(-rw-r--r--)などにするとSSH接続時に以下のようなエラーが表示されます。
SSHコマンドを実行します。
接続するEC2インスタンスのホスト名(Public DNS)は起動する度に変更されますので随時確認してください。
EC2インスタンスを停止(stop)する
AWSは従量課金なので起動時間が長いほど請求金額が高くなりますので使い終わったら停止(stop)または削除(terminate)してください。 コマンドでEC2インスタンスを停止してみます。EC2インスタンスからログアウト(exit)して下記のコマンドを実行します。
ec2-stop-instancesコマンドを使うときに、先ほどのEC2インスタンスのインスタンスIDを指定します。
EC2インスタンスを削除(terminate)する
EC2インスタンスをstopさせれば課金されることはありませんが、使い終わったら削除(terminate)しておいた方が(精神的に)安全でしょう。
EC2インスタンスをTerminteするには、ec2-terminate-instances コマンドを実行します。
最後に
コマンドからEC2インスタンスを操作できるようになりました。 EC2インスタンスの他にもELBやRDSなどのツールも提供されており、設定すれば同じように操作することができます。 次回は先ほど設定したアクセスキーとシークレットキーの取得方法を取り上げたいと思います。
参考URL
- Commands (CLI Tools)
- コマンド一覧です。コマンドで色んなことができます
- Amazon Elastic Compute Cloud ドキュメント
*1:次回、記事を書く予定です
'Cloud > AWS' 카테고리의 다른 글
Amazon EBS 스냅샷 삭제 (0) | 2019.01.09 |
---|---|
크로스어카운트 (교차계정어카운트)로 다른 어카운트 리소스 관리하기 (0) | 2019.01.09 |
ec2루트 디바이스 볼륨, 블록 디바이스, 어떻게 AMI가 EBS/instance store와 맵핑되는지 (0) | 2018.12.04 |
EBS volume와 instance store volume의 차이 (0) | 2018.12.04 |
aws 오답노트 (0) | 2018.12.03 |