話題の記事

Amazon EC2再入門 2014年7月版

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。 最近EC2関連の重要アップデートが出てきました。嬉しい機能が増えているのですが、昔の知識では使いこなせないので、現時点でのEC2の起動方法について纏めようと思います。

Management ConsoleからEC2を起動します。今回は東京リージョン(ap-northeast-1)でAmazon Linuxを起動する前提です。

本記事のアップデートとして Amazon EC2再入門 2015年1月版 を書きました。最新情報はこちらを参照してください。

 起動手順

EC2を起動していきましょう。

AWS_Management_Console_ec2

AMIの選択

AMI(Amazon Machine Image)を選択します。

choose_ami 好きなOSを選択しましょう。注意点はCPUアーキテクチャ、ハイパーバイザ、ルートデバイスです。 ここではAmazon Linux AMI 2014.03.2(HVM) - ami-29dc9228を使用します。

CPUアーキテクチャ

 CPUアーキテクチャは64bitと32bitがあります。32bitでは基本的に対応するメモリ量が4GBまでなのでスケールアップに限界があります。 基本的に64bitのAMIを選択しましょう。

ハイパーバイザ

AWSの仮想化機構はHVM(完全仮想化)とPV(準仮想化)の2種類があります。一昔前はカーネルの対応を行うPVの方が高速と言われましたが、現在ではCPUの仮想化支援機構の充実によりHVMの方が高速になっています。 過去の資産を使用する等の理由が無ければHVMのAMIを使用しましょう。

ルートデバイス

ルートデバイスにはInstance store-Backed と EBS-Backedの2種類が有ります。Instance store-BackedはEC2のインスタンスストア(Ephemeral Disk)にブートイメージにコピーして、そこからOSが起動します。EBS-Backedは起動用EBSをアタッチして、そこからOSが起動します。 起動時間が高速、Stopが可能等の利点が多いので、EBS-BackedのAMIを使用しましょう。

インスタンスタイプの選択

起動するインスタンスのスペック(インスタンスタイプ)を選択します。

choose_instance_type 必要なマシンスペックを選択しましょう。インスタンスタイプには現行世代と旧世代が有り、さらに以下の様に6種類のインスタンスファミリーに分類できます。

  • 汎用
  • コンピューティング最適化
  • メモリ最適化
  • GPU
  • ストレージ最適化
  • マイクロ

各インスタンスファミリーに対応するCPUアーキテクチャ、ハイパーバイザ等をまとめると以下の表になります。

世代 インスタンス ファミリー タイプ CPU Arch HVM 対応 PV 対応 Placement group対応 Instance Store
現行世代 汎用 T2 64-bit, 32-bit × × 無し
M3 64-bit × SSD
コンピューティング 最適化 C3 64-bit SSD
メモリ 最適化 R3 64-bit × SSD
GPU G2 64-bit × SSD
ストレージ 最適化 I2 64-bit × SSD
HS1 64-bit HDD
旧世代 汎用 M1 64-bit, 32-bit *1 × × HDD
コンピューティング 最適化 C1 64-bit, 32-bit *2 × × HDD
CC1 64-bit × × HDD
CC2 64-bit × HDD
メモリ 最適化 M2 64-bit × × HDD
CR1 64-bit × SSD
GPU CG1 *3 64-bit × HDD
ストレージ 最適化 HI1 64-bit SSD
マイクロ T1 64-bit, 32-bit × × 無し

少し前まではHVM対応の小さいインスタンスタイプが有りませんでしたが、T2インスタンスの発表により無料枠を含めHVM対応インスタンスを使用できます。 同一価格帯のインスタンスタイプでは、旧世代に比べ現行世代の方が高性能でコストパフォーマンスが良いので、現行世代のインスタンスタイプを選択しましょう。ここではc3.largeを選択します。 注意点もあります。2012年以前に作成したAWSアカウントでは東京リージョンにアベイラビリティゾーン(AZ)が3個表示されると思います。その中で1個のAZでは現行世代のインスタンスタイプを使用できません。比較的最近(2013年以降)に作成したAWSアカウントの場合は、現行世代が使用できないAZは表示されないため、意識する必要は有りません。

インスタンスの詳細設定

次はインスタンスの起動設定の詳細を設定します。

configure_instance_detail

設定項目 解説 推奨設定値
Number of Instances 起動するインスタンス数を設定できます。 ここでは"1"を入力します。
Purchasing option Spotインスタンスを利用するか選択できます。Spotインスタンスはリアルタイムで価格が変動します。非常に低価格ですが、高くなる場合も有り、Stopができません。Spotインスタンスを使いこなす為にはコツが必要です。 基本的にはチェックしません。
Network インスタンスを配置するVPCを選択します。VPCは隔離されたネットワークを作成する事ができます。VPCには最初から用意されているDefault VPCが有ります。また自分でVPCを作成する事ができます。 ここではDefault VPCを選択します。
Subnet 選択したVPC内のsubnetを選択します。Default VPCの場合はAZ毎に1個のPublic Subnetが有ります。自分で作成したVPCではPublic SubnetやPrivate Subnetを自由に設定できます。 ここでは、ap-northeast-1aのsunbetを選択します。
Public IP 自動でパブリックIPを設定するか選択できます。別途Elastic IPでパブリックIPを付与する事も可能です。 ここではチェックして、パブリックIPを付与します。
Placement group Placement group対応インスタンスタイプの場合に表示されます。Placement groupを使用すると低レイテンシーで通信する事が可能になります。 ここでは"No placement group"を選択します。
IAM Role インスタンスに付与されるIAM権限(IAM Role)を設定できます。 必要な場合に設定して下さい。ここでは"None"を選択します。
Shutdown behavior OSをシャットダウンした時の挙動を設定できます。 基本的にStopを選択しましょう。
Enable termination protection 誤ってインスタンスをterminatする事を防止できます。 作業ミス防止の為にチェクをしましょう。
Monitoring CloudWatchのメトリクス採取を通常の5分間隔から1分間隔へ変更できます。 通常はチェックをしないで問題ありません。
Tenancy 使用する物理ハードウェアを専用で使用する事ができます。 通常はShared tenancyを選択します。

Network interfaces

プライベートIPアドレスの指定や追加のネットワークインターフェースの設定が行えます。

Advanced Details

使用するカーネルやRAM Diskの設定、User dataを設定できます。 カーネルやRAM Diskの設定は通常使用しないと思います。 User dataはcloud-initという機能でインスタンス起動時にOSの設定を行えます。

ストレージの追加

起動するインスタンスで使用するディスクを設定できます。

add_storage 使用できるディスクの種類は以下になります。

Type Volume Type 解説
Root EBSを参照して下さい。 EBS-Backed AMIの場合に表示されます。ルートデバイス(EBS)の設定を行います。
Instance Store - 各インスタンスタイプのInstance Storeによって、有無、個数、HDDかSSDが変わります。Instance StoreはStopすると内容が消えます。
EBS General Purpose(SSD) 標準のタイプです。通称"gp2"です。SSDを使用しており、IOPSがサイズ(GB)の3倍に設定されます。IOPSはバーストが可能で最大3000IOPSになります。
Provisioned IOPS(SSD) IOPSを指定する事ができるタイプです。SSDを使用しており、IOPSをサイズ(GB)の30倍まで指定でき、最大4000IOPSまで設定できます。ただし、IOPSの設定値にも料金が発生します。
Magnetic  以前の標準タイプです。1GBあたりのコストが最も安くなります。

ここでは"Volume Typr"やサイズ以外にデバイスのパスや"Delete on Termination"、"Encrypted"が設定可能ですが、デフォルトの設定のままとします。 ストレージの設定はGeneral PurposeでVolumeを作成する事を推奨します。サイズを小さくし過ぎるとIOPSのバースト制限を超えた場合にディスクIOが遅くなるので注意して下さい。

タグの設定

インスタンスのメタ情報としてタグを設定できます。

tag_instance Nameタグにはインスタンスの名称を記述します。タグの利用方法として、コストをカテゴライズする事もできます。

セキュリティグループの設定

起動するインスタンスに設定する仮想ファイアウォール(セキュリティグループ)を設定します。

configure_security_group ここではSSHで接続する設定を行います。"Source"でMy IPを選択すると現在接続しているパブリックIPからのみ接続を許可する設定になります。 SSH等はMy IPの設定で接続元を制限する事を推奨します。

起動設定の確認

設定した内容を確認します。

review_instance_launch

内容に誤りが無ければ"Launch"をクリックします。

キーペアの設定

最後にインスタンスにSSHでログインする時のキーペアを選択します。

select_keypair

ここでは既存のキーペアを選択します。新規でキーペアを作成する事も可能です。

インスタンスへのログイン

インスタンスのPublic DNSを確認します。

public_dns_ec2

Amazon Linuxの場合はec2-userでログインするので、以下のコマンドでログインします。

ssh -i <keypair> ec2-user@<Public DNS>

login_ec2_instance

ようやくログインができました。

まとめ

今回は入門編のため、User dataやネットワーク設定の詳細を割愛していますが、それでもこれだけの設定をする必要が有ります。単にインスタンスを起動するだけであれば、デフォルト値を設定するだけで簡単に設定ができます。しかし、AWSを使いこなす為には設定内容を理解する必要があります。 2014年6月に新しいEBSにタイプ"General Purpose"が、2014年7月にT2インスタンスが発表になり推奨すべき設定内容が変わってきていますので、インスタンスの起動時の設定を見直すと良いと思います。

参考資料

Amazon Elastic Compute Cloud User Guide

【AWS発表】新しいSSDベースのElastic Block Storage

【AWS発表】バースト可能な性能を持つ新しい低コストEC2インスタンス

脚注

  1. m1.medium以下は64-bit, 32-bitに対応。m1.large以上は64-bitのみ。
  2. c1.medium以下は64-bit, 32-bitに対応。c1.large以上は64-bitのみ。
  3. 東京リージョンは未対応。