ちょっと話題の記事

Amazon EC2再入門 2015年7月版

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

ウィスキー、シガー、パイプをこよなく愛する大栗です。 恒例となってきましたが「Amazon EC2再入門」をアップデートしようと思います。相も変わらずにAWSがアップデートを続けているので記事も最新化します。

最近半年のEC2関連アップデートまとめ

前回の記事から半年の間でEC2に関するアップデートです。成熟したサービスであるEC2でも、まだまだアップデートは止まらないようです。

以降はEC2の起動方法を解説していきます。

 起動手順

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

EC2_Management_Console

AMIの選択

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

EC2_Management_Console

AMIの種類

Amazon Machine Image(AMI)には以下のような種類があります。

  • マイ AMI 自分で作成したAMIです。
  • AWS Marketplace Marketpkaceで公開されているAMIです。
  • コミュニティ AMI 他のユーザが公開しているAMIです。

MarketplaceのAMIを使用する場合は、EC2のランニングコスト以外にOSやソフトウェアのコスト *1が掛かります。またMarketplaceで作成したインスタンスのEBSボリュームは、他のインスタンスにアタッチできないので注意が必要です。 自分で作成したAMIは、他のユーザと共有したり、一般に公開したりすることも可能です。

カスタムAMIを共有する際のポイント2つ

OSの種類

好きなOSを選択しましょう。AMIは、CPUアーキテクチャ、仮想化タイプ、ルートデバイスも考慮して決定しします。 ここでは Amazon Linux AMI 2015.03 (HVM), SSD Volume Type - ami-1ecae776 を使用します。

CPUアーキテクチャ

 CPUアーキテクチャは基本的に64 ビットです。32 ビットでは基本的に対応するメモリ量が4GBまでなのでスケールアップに限界があります。32 ビットのOSで現行世代のインスタンスタイプで使用できるのはWIndows Server(HVM)のみで、32 ビットのPVでは旧世代のインスタンスしか使用できないため、特別な理由がない限り選択しません。

64 ビットのAMIを選択しましょう。

仮想化タイプ

AWSの仮想化機構はhvm(完全仮想化)とparavirtual(準仮想化)の2種類があります。一昔前はカーネルの対応を行うparavirtualの方が高速と言われましたが、現在ではCPUの仮想化支援機構の充実によりhvmの方が高速になっています。最近作成されるAMIは基本的にhvmとなります。 過去の資産を使用する等の理由が無ければ仮想化タイプ: hvmを使用しましょう。 hvmとparavirtualの速度差の詳細は、以下の記事を参照してください。

EC2をHVMに移行するモチベーション – AWS Advent Calendar 2014:9日目

ルートデバイスタイプ

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

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

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

EC2_Management_Console

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

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

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

世代 インスタンス ファミリー タイプ 物理プロセッサ CPU アーキテクチャ HVM 対応 PV 対応 EBS最適化 プレイスメント グループ対応 インスタンス ストレージ 拡張ネットワーキング
現行世代 汎用 T2 Intel Xeon Family 64 ビット、32 ビット × × × 無し ×
M4 Intel Xeon E5-2676v3 64 ビット × *2 無し
M3 Intel Xeon E5-2670v2 64 ビット △ (m3.xlarge以上) × SSD ×
コンピューティングの最適化 C4 Intel Xeon E5-2666v3 64 ビット × *3 無し
C3 Intel Xeon E5-2680v2 64 ビット △ (c3.xlarge以上) SSD
メモリ 最適化 R3 Intel Xeon E5-2670v2 64 ビット × △ (r3.xlarge以上) SSD
ストレージの最適化 I2 Intel Xeon E5-2670v2 64 ビット × SSD
D2 Intel Xeon E52676v3 64 ビット × *4 HDD
GPU インスタンス G2 Intel Xeon E5-2670 64 ビット  ×  ○  SSD ×
旧世代 汎用 M1 Intel Xeon Family 64 ビット、32 ビット *5 × △ (m1.large以上) × HDD ×
コンピューティング 最適化 C1 Intel Xeon Family 64 ビット、32 ビット *6 × △ (c1.xlargeのみ) × HDD ×
CC1 不明 64 ビット × × × HDD ×
CC2 Intel Xeon E5-2670 64 ビット × × HDD ×
メモリ 最適化 M2 Intel Xeon Family 64 ビット × △ (m2.2xlarge以上) × HDD ×
CR1 Intel Xeon E5-2670 64 ビット × × SSD ×
ストレージ 最適化 HI1 Intel Xeon Family 64 ビット × SSD ×
HS1 Intel Xeon E5-2650  64 ビット × HDD ×
GPU インスタンス CG1 *7 Intel Xeon x5570 64 ビット × × HDD ×
マイクロ T1 変動する 64 ビット、32 ビット × × × 無し ×

旧世代のインスタンスはフィルタ条件で「すべての世代」を選択する必要があるので現行世代のインスタンスタイプから選択しましょう。ここではc3.largeを選択します。

同一価格帯のインスタンスタイプでは、旧世代に比べ現行世代の方が高性能でコストパフォーマンスが良いので、旧世代のインスタンスは選択する必要がないはずです。

注意点もあります。2012年以前に作成したAWSアカウントでは東京リージョンにアベイラビリティゾーン(AZ)が3個表示されると思います。その中で1個のAZでは現行世代のインスタンスタイプを使用できません。比較的最近(2013年半ば以降)に作成したAWSアカウントの場合は、現行世代が使用できないAZは表示されないため、意識する必要は有りません。

インスタンスの詳細設定

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

EC2_Management_Console

設定項目 解説 推奨設定値
インスタンス数 起動するインスタンス数を設定できます。 ここでは1台起動するので"1"を入力します。
購入のオプション スポットインスタンスを利用するか選択できます。スポットインスタンスはリアルタイムで価格が変動します。非常に低価格ですが、高くなる場合も有り、停止ができません。スポットインスタンスを使いこなす為にはコツが必要です。 通常のオンデマンドインスタンスを使用するためチェックしません。
ネットワーク インスタンスを配置するVPCを選択します。VPCは隔離されたネットワークを作成する事ができます。VPCには最初から用意されているデフォルトVPCが有ります。また自分でVPCを作成する事ができます。 ここではデフォルトVPCを選択します。
サブネット 選択したVPC内のサブネットを選択します。デフォルトVPCの場合はAZ毎に1個のパブリックサブネットが有ります。自分で作成したVPCではサブリップサブネットやプライベートサブネットを自由に設定できます。 ここでは、ap-northeast-1aのsunbetを選択します。
自動割り当てパブリック IP 自動でパブリックIPを設定するか選択できます。別途Elastic IPでパブリックIPを付与する事も可能です。 ここでは"有効化"を選択して、パブリックIPを付与します。
配置グループ プレイスメント グループ対応インスタンスタイプの場合に表示されます。プレイスメント グループを使用すると低レイテンシーで通信する事が可能になります。 ここでは"プレイスメントグループ無し"を選択します。
IAM ロール インスタンスに付与されるIAM権限(IAM Role)を設定できます。 必要な場合に設定して下さい。ここでは事前に作成した"admin-role"を選択します。「新しいIAMロールの作成」からIAMロールを作成します。
シャットダウン操作 OSをシャットダウンした時の挙動を設定できます。 基本的に"停止"を選択しましょう。
削除保護の有効化 誤ってインスタンスを削除する事を防止できます。 作業ミス防止の為にチェクをします。
モニタリング CloudWatchのメトリクス採取を通常の5分間隔から1分間隔へ変更できます。 通常はチェックをしないで問題ありません。
テナンシー 使用する物理ハードウェアを専用で使用する事ができます。 通常は"共有テナンシー"を選択します。

ネットワークインターフェイス

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

高度な詳細

使用するカーネルやRAMディスクの設定、ユーザーデータを設定できます。 仮想化タイプがPVの場合は、カーネルやRAM Diskの設定が行えます。HVMの場合には存在しない設定なので、覚える必要はありません。 ユーザーダータはcloud-initという機能でインスタンス起動時にOSの設定を行えます。cloud-initの詳細は、以下のリンクを参照してください。記述したスクリプトなどの実行ができます。

cloud-initを徹底的に使い倒す – シリーズ –

CloudInit - Official Ubuntu Documentation

なお、WIndows Serverの場合でもスクリプトを実行することが可能です。

バージニア北部でWindowsを起動する場合

バージニア北部はSSMというサービスがサポートされています。SSMではDirectory Serviceに参加することもできるので、以下の画像のように「ドメイン結合ディレクトリ」という項目が表示されます。対象VPCにDirectory Serviceが起動している場合、ディレクトリを選択すると起動時に自動でドメイン参加できます。

EC2_Management_Console

ストレージの追加

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

EC2_Management_Console

ディスクの種類

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

Type Volume Type 解説
ルート EBSを参照して下さい。 EBS-Backed AMIの場合に表示されます。ルートデバイス(EBS)の設定を行います。
インスタンス ストア - 各インスタンスタイプによって、インスタンス ストアの有無、個数、HDDかSSDが変わります。インスタンス ストアはStopすると内容が消えます。通常はSWAPファイル用に使用することが多いです。
EBS 汎用(SSD) 標準のタイプです。通称"gp2"です。SSDを使用しており、IOPSがサイズ(GB)の3倍に設定されます。ディスクサイズは最大16TBです。IOPSは3,000 IOPSまでバーストが可能で、2015年7月29日時点で最大10,000 IOPSになります。
プロビジョンド IOPS(SSD) IOPSを指定する事ができるタイプです。SSDを使用しており、IOPSをサイズ(GB)の30倍まで指定でき、最大16TB/20,000 IOPSまで設定できます。ただし、IOPSの設定値にも料金が発生します。
マグネティック  以前の標準タイプです。1GBあたりのコストが最も安くなりますが、磁気ディスクを使用しているため低速です。

ここでは"ボリュームタイプ"やサイズ以外にデバイスのパスや"合わせて削除"、"暗号化済み"が設定可能ですが、デフォルトの設定のままとします。 ストレージの設定は汎用(SSD)でボリュームを作成する事を推奨します。汎用(SSD)を使用することでインスタンスの起動が高速化されるなどの効果があります。 ただし、サイズを小さくし過ぎるとIOPSのバースト制限を超えた場合にディスクIOが遅くなるので注意して下さい。

ストレージのオプション

ストレージのオプションには、以下のものがあります。

  • 合わせて暗号化 インスタンスを削除した時にEBSを削除するかのオプションです。
  • 暗号化済み EBSを暗号化するかのオプションです。なお、ルートデバイスは暗号化できません。

タグの設定

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

EC2_Management_Console

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

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

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

EC2_Management_Console_と_インスタンスタイプ_-_Amazon_EC2(スケーラブルなクラウド上の仮想サーバー)___アマゾン_ウェブ_サービス(AWS_日本語)

ここではSSHで接続する設定を行います。"Source"でマイ IPを選択すると現在接続しているパブリックIPからのみ接続を許可する設定になります。 LinuxのSSHやWindowsのRDP等のように管理用通信はマイ IPの設定で接続元を制限する事を推奨します。

起動設定の確認

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

EC2_Management_Console

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

キーペアの設定

最後にインスタンスにSSHでログインする時のキーペアを選択します。Windowsの場合はキーペアを使用してパスワードの復号化を行います。

EC2_Management_Console

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

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

インスタンスのパブリック DNSを確認します。

EC2_Management_Console

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

ssh -i キーペア ec2-user@パブリックDNS

ec2-user_ip-172-31-2-237__

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

まとめ

今回は入門編のため、ユーザやネットワーク設定の詳細、Windows Serverの場合のディレクトリ参加の詳細を割愛していますが、それでもこれだけの設定をする必要が有ります。単にインスタンスを起動するだけであれば、デフォルト値を設定するだけで簡単に設定ができます。しかし、AWSを使いこなす為には設定内容を理解する必要があります。

特に2015年に発表されたインスタンスファミリー(C4、D2、M4)はEBS最適化がデフォルトで有効となっています。今後EBSとインスタンスストアの使い分けが重要になっていくのではないかと思います。

最後に

1年前に最初の記事を書いて半年前に更新しているのに、今回の更新でもEC2のアップデートがあるたくさん有りました。今後もこのペースでEC2の最新まとめを書いて行きたいと思います。

半年前の記事では、以下のセリフを書いていました。最近AuroraもGAになりましたが、RDSのまとめ記事を書いていないので誰か書かないかな?

次はRDSのまとめ記事をAuroraが普通に使えるようになったら書いてみようかな。

参考資料

Amazon Elastic Compute Cloud User Guide

脚注

  1. OSやソフトウェアの費用が発生しない場合もあります。
  2. M4インスタンスは標準でEBS最適化が有効
  3. C4インスタンスは標準でEBS最適化が有効
  4. D2インスタンスは標準でEBS最適化が有効
  5. m1.medium以下は64 ビット, 32 ビットに対応。m1.large以上は64 ビットのみ。
  6. c1.medium以下は64 ビット、32 ビットに対応。c1.large以上は64 ビットのみ。
  7. 東京リージョンは未対応。