AWS - Amazon EC2
概要
Amazon EC2 (Amazon Elastic Compute Cloud) とは、クラウド上にOS付きの仮想マシン (VM) を作成できるサービスである。
クラウド上に自身または自社専用のサーバを構築することができる。
このように、クラウド上でOSありの仮想マシン環境を提供するサービスをIaaS (Infrastructure as a Service )と呼ぶ。
Amazon EC2はIaaSの中でも最も広く使用されているサービスであり、AWSの主要サービスの1つである。
Amazon EC2のようなIaaSをオンプレミスサーバと比較したメリットとして、物理的なハードが不要である事によるスペースや初期費用のメリットが挙げられる。
また、それ以外にも以下に示すメリットが得られる。
- 従量制(使用した分)だけ過不足なく料金が請求される。(コストの変動費化)
- 障害への耐性を簡単な設定で確保できる。(可用性)
- 適切な設定により柔軟に性能を向上できる。(パフォーマンス)
- アクセス権限を簡単に設定できる。(セキュリティ)
また、より機能を限定したSaaSやPaaSと比較した場合の特徴としては、「様々なことができるが、何かをするためには自身で逐次設定が必要である」ことが挙げられる。
ただし、近年ではサーバーレス技術を用いて設定管理を簡略化できるFargateやLambda等のサービスに置き換えられることも増えている。
しかし、様々なことができ、かつ、料金が安いというAmazon EC2の特徴は多くの企業にとって魅力的である。
EC2の構造
Amazon EC2は大きく分けて、3つの構成要素から成り立っている。
名称 | 一般的なPCにおける役割 |
---|---|
AMI (OS) | OS (Linux, Windows等) + 一部のミドルウェア |
インスタンスタイプ | CPU + メモリ (+ ストレージ + GPU) |
ストレージ (EBS) | ストレージ |
AMI (OS)
AMI (Amazon Machine Images) とは、インスタンスの起動時に実行するOSイメージを表す。
また、ミドルウェアがインストールされたAMIもあり、用途に応じて選択することができる。
AWSがデフォルトで提供するAMI以外にも、サードパーティ製のAMIやユーザが独自に作成できるカスタムAMIと呼ばれる仕組みが存在しており、環境構築の簡略化やバックアップ用途等で使用されている。
AWSがデフォルトで提供するAMIを下表に示す。
また、アーキテクチャも同時に選択できるが、アーキテクチャとインスタンスタイプのアーキテクチャを揃える必要がある。
名称 | 分類 | 概要 |
---|---|---|
Amazon Linux | Linux | RHEL派生のAmazonがカスタマイズしたLinux |
SLES | Linux | Slackware派生のLinux |
RHEL | Linux | RHEL |
Ubuntu Pro | Linux | Debian派生のLinux |
Windows Server | Windows | - |
初めて使用する場合は、Amazon Linuxを選択することが推奨される。
ミドルウェア
一般的なのWebサーバ等の用途であれば、OSのみがインストールされたAMIでよい。
以下に示すような特殊用途を想定して、一部ミドルウェアがインストールされたAMIも提供されている。
AMIの名称 | 概要 | 用途 |
---|---|---|
Deep Learning AMI | TensorFlowおよびPyTorchの実行環境(CUDA, GPUドライバ等) | Deep LearningによるAI開発 |
with SQL Server | SQL Serverがインストールされている | データベースサーバ |
with .NET 6 | .NETの開発環境やMATEによるデスクトップ環境 | .NETを使用した開発 (Unityを使用したゲーム開発等) |
インスタンスタイプ
サーバ上で処理を実行する装置(CPU, RAM等)を選択する。
CPUおよびRAM等を選択するために一意に付与されたIDをインスタンスタイプと呼び、t2.microのような名称で表される。
名称の解釈を以下に示す。
- 先頭の文字
- インスタンスの種類(ファミリー)
- 用途と対応
- 先頭から2つ目の数字
- 世代
- 数字が大きいほど高スペック
- nano、micro
- サイズを表す。
- 基本的に大きいほど高スペック
名称 | 概要 |
---|---|
vCPU | 仮想CPUの個数 (詳細なCPUの種類は、Amazon EC2の公式ドキュメントを参照すること) |
メモリ | 仮想メモリの容量 |
ネットワーク帯域幅 | EC2外部と通信する際の帯域幅 (通信速度) |
ストレージ | インスタンスストア(後述)の容量 (EBSではないことに注意する) 通常は0 |
GPU | GPUの個数 (一般的なサーバ用途では0 でよいが、Deep Learningをする場合は必要となる)
|
また、用途とインスタンスタイプの関係の詳細を知りたい場合は、Amazon EC2の公式ドキュメントを参照すること。
例えば、学習用途の場合は、t2.microを選択してよい。
ストレージ (EBS)
一般的なPCにおけるストレージと同様に、Amazon EC2にもストレージを付与する必要がある。
特に、起動用OSがインストールされたルートボリュームは必須である。
Amazon EC2のストレージには、一般的にEBS (Elastic Block Store)というサービスが用いられるが、特殊な用途ではインスタンスストアと呼ばれるサービスも使用される。
名称 | 冗長性 | 着脱(アタッチ)可否 | データの永続性 | バックアップ(スナップショット) | 速度(スループット) | 速度(IOPS) |
---|---|---|---|---|---|---|
EBS | 可能 | あり | あり | 可 | 高速 | SSDは高速 HDDは低速 |
インスタンスストア | 不可 | なし | なし | 不可 | EBSより高速 | EBSよりかなり高速 |
スループットとIOPSの違いを以下に示す。
- スループット
- 大きなファイルを一度に読み書きする時の速度
- IOPS
- 細切れのファイルに頻繁に読み書きする時の速度
EBS
EBSは、Amazon EC2に対して自由に着脱(アタッチ / デタッチ)可能なストレージであり、一般的なストレージのように使用することができる。
EBSもインスタンスタイプと似たボリュームタイプと呼ばれる一意の名称から選択することができる。
主なボリュームタイプを下表に示す。
ボリュームタイプ名称 | 種類 | 耐久性 | スループット (MB/s) | IOPS (回/s) | 容量 | 備考 |
---|---|---|---|---|---|---|
gp3 | SSD | 99.8% 〜 99.9% | 1000 | 16,000 | 1[GB] 〜 16[TB] | |
gp2 | SSD | 99.8% 〜 99.9% | 250 | 16,000 | 1[GB] 〜 16[TB] | |
io2Block Express | SSD | 99.8% | 1000 | 16,000 | 4[GB] 〜 64[TB] | |
io2 | SSD | 99.999% | 4000 | 256,000 | 4[GB] 〜 16[TB] | |
io1 | SSD | 99.999% | 1000 | 64,000 | 4[GB] 〜 16[TB] | 複数インスタンス共有可 |
st1 | HDD | 99.8% 〜 99.9% | 500 | 500 | 125[GB] 〜 16[TB] | ルートボリューム不可 |
sc1 | HDD | 99.8% 〜 99.9% | 250 | 250 | 125[GB] 〜 16[TB] | ルートボリューム不可 |
基本的に、HDDタイプのsc1 / st1よりもSSDタイプのgp2やgp3の方が高性能かつ料金が高い。
また、同じSSDタイプでもgp2 / gp3より、io1 / io2の方が高性能かつ料金が高い。
gp2が容量に応じた時間課金のみであるのに対し、gp3は読み書きに伴うIOPSやスループットにも課金される。
ボリュームタイプによる性能差は、スループットよりもIOPSの方が大きいため、IOPSに求められる要件と料金のバランスを見て判断することを推奨する。
スループットやIOPSは、ボリュームの容量によっても変化するため、詳細を知りたい場合はAmazon EC2の公式ドキュメントを参照すること。
なお、EBSはAmazon EC2と一体化して動作するという特性上、同じAZ内のAmazon EC2インスタンスとしか紐付けることができない。
また、io1を除き、1つのEBSを複数のAmazon EC2インスタンスで共有する事はできない。
※スナップショットとは
スナップショットは、EBSのデータをAmazon S3にバックアップする機能のことである。
これは、ユーザのAmazon S3ではなく、AWSが管理するAmazon S3バケットに保存される。
障害時の復旧等に有用な機能であるが、有料であることに注意する。
また、EBSのみで使用できる機能であるため、インスタンスストアでは使用できないことに注意する。
スナップショットによるバックアップの詳細は、AWS - Amazon EC2#バックアップのページを参照すること。
インスタンスストア
一般的に、Amazon EC2のストレージにはEBSが使用されるが、一部のインスタンスタイプではインスタンスストアと呼ばれるストレージが選択できる。
インスタンスストアはEBSと比較してデータ消失のリスクがあるが (冗長性がない、かつ、インスタンス停止時にデータが自動的に削除される等)、
高速アクセスが可能なストレージ(IOPSが速い)であり、耐障害性を犠牲にしてでも高頻度アクセスにおける処理速度を重視する用途 (一時ストレージ等)に向いている。
選択可能なインスタンスストアの種類は、Amazon EC2の公式ドキュメントを参照すること。
EBSとインスタンスストアの比較
- EBS
- 標準的な速度であるが、データの消失対策やコスト面に優れる。
- インスタンスストア
- 大変高速であるが、データの消失対策やコスト面で弱い。
- 使用例: 速度最優先の一時ストレージ向け
両者の比較は、AWSの公式ドキュメントでも比較されており、
インスタンスストアが適した用途として頻繁に変更される情報 (バッファ、キャッシュ、スクラッチデータ、その他の一時コンテンツ等) の一時ストレージに最適と記載されている。
S3 / EFSとの違い
EBSやインスタンスストアはOSのイメージを持つため、Amazon EC2インスタンスと一緒に動作する事が前提となるため、一般的なサーバの内蔵ストレージに相当する。
一方、S3は静的サイトのホスティングに使用されることから、それだけで独立したサービスとして動作するストレージ (SaaS) である。
また、AWSで使用されるストレージにEFSがあり、
これはEBSのようにAmazon EC2にマウントでき、かつ、複数のAmazon EC2インスタンスで共有ができるため、NASに近い存在といえる。
また、EFSはLambdaやFargate等のAmazon EC2以外のコンピューティングサービスでも使用できる。
共に、KMSによる暗号化ができる等の共通点もある。
その他、冗長化やデータの保持形式も異なっている。
動作形態 | デフォルトの冗長化方法 | データ保持形式 | |
---|---|---|---|
EBS | Amazon EC2インスタンスと一緒に動作 | 単一AZ内で冗長化 | ブロックストレージ |
S3 | 単独のサービスとして動作 | 複数AZで冗長化 | オブジェクトストレージ |
EFS | Amazon EC2インスタンスにマウントされる事が多いが、 他サービスからも利用可能 |
複数AZで冗長化 | ファイルストレージ |
ネットワーク
外部からAmazon EC2へアクセスする場合は、ネットワークの構築をする必要がある。
名称 | 説明 |
---|---|
VPC | AWS上で仮想ネットワークを構築して、セキュリティや耐障害性を向上させる。 |
ENI (Elastic Network Interface) | インスタンスに新たなIPアドレスを付与する。 |
Elastic IP | インスタンスに固定のグローバルIPアドレスを付与する。 |
ELB (ロードバランサ) | 複数のインスタンスにアクセスを分散させて、可用性向上や負荷分散を自動化する。 |
Auto Scaling | 負荷に応じてインスタンス数を自動で変化させ、コストと性能のバランスを自動調整する。 |
プレイスメントグループ | 複数のインスタンスをグループ化して、インスタンス間の通信速度や耐障害性を向上させる。 |
SSHによるアクセス | キーペアで公開鍵認証によるSSH通信でインスタンスに接続して、外部からセキュアなインスタンスの操作を実現する。 |
VPC
VPC (Virtual Private Cloud) とは、AWS上で仮想ネットワークを構築できるサービス (Amazon EC2とは別のサービス) であり、Amazon EC2も基本的にはこのVPC内に設置されて動作する。
デフォルトの設定において、Amazon EC2インスタンスを作成するとデフォルトのVPCが自動的に紐付けられるため、単一のAmazon EC2であればVPCを意識しなくとも使用できる。
しかし、複雑なシステムを構築する場合は、VPCの知識は必須となる。
VPCの詳細を知りたい場合は、AWS - Amazon VPCのページを参照すること。
ENI
ENI (Elastic Network Interface) サービスを着脱 (アタッチ / デタッチ) することにより、ネットワークへの接続経路、すなわちインスタンスに付与されたIPアドレスの数を増減することができる。
1つのENIに複数のIPアドレスを付与することもできる。
ENIが無い場合はネットワークにアクセスできないため、Amazon EC2インスタンスにはデフォルトで1つのENIが付加されている。
また、ENIを追加することもできる。
※注意
なお、後述のElastic IPやセキュリティグループは、Amazon EC2インスタンスではなくENIに付与されているため、ENIのアタッチ / デタッチ時は再設定が必要となることに注意する。
EFA
ENIに高速化が施されたEFA (Elastic Fabric Adapter) サービスも存在する。
これは、大規模シミュレーションや機械学習等のハイパフォーマンス性能が求められる用途において、複数のコンピュータが連携して動作するHPC処理に適している。
Elastic IP
Amazon EC2のインスタンスにおいて、グローバルIPアドレスは動的に付与されるため、再起動ごとにIPアドレスが変更される。
これを防ぐため、Elastic IP (EIP) は固定のグローバルIPアドレスを割り振る。
ELB
複数のサーバを並列に立ち上げ、アクセスを分散させることで負荷を軽減させる仕組みがロードバランサである。
AWSにおいては、ELB (Elastic Load Balancer) と呼ばれるロードバランサがサービスとして提供されており、
アクセスを複数のAmazon EC2インスタンス、あるいは、FargateやRDSのようなサービスに分散させることができる。
また、下図のようにELB / ALBにおいて、分散先のインスタンスを複数のAZに配置することにより、冗長性の確保を実現することもできる。
Auto Scaling
ELBで負荷分散をする場合、Amazon EC2インスタンスの数が重要となる。
インスタンスの数が多いほど捌けるアクセス数が増えて性能が向上するがコストも増大するため、コストと性能のバランスを取り、インスタンスの数を調整することが望ましい。
これに対応するため、負荷に応じてインスタンスの数を動的に変化させて、コストと性能のバランスを自動調整するサービスがEC2 Auto Scalingである。
プレイスメントグループ
物理的距離の差により通信速度(RTT)が早くなる。 (往復距離に掛かる時間 (RTT: レイテンシ))
同様にAWSにおいても、複数のインスタンスをグループ化してRTTが小さくなるよう配置することにより、同一AZ内のインスタンス同士の通信速度を向上させるプレイスメントグループと呼ばれる機能が存在する。
プレイスメントグループでは、以下の3種類のグルーピング方法を選択することができ、パーティションとスプレッドは速度だけでなく耐障害性も向上させることができる。
名称 | 配置 | 用途 |
---|---|---|
クラスタ | グループ内のRTTが小さくなるようインスタンスを配置する。 | 速度重視 低RTT 高スループット |
パーティション | インスタンスをパーティション単位で分けて、パーティション同士がラックと電源を共有しないよう配置する。 | 速度と耐障害性のバランス |
スプレッド | 全てのインスタンスがラックと電源を共有しないよう配置する。 | 耐障害性重視 |
プレイスメントグループにより、具体的にどの程度速度が向上するかは、以下に示すWebサイトで詳細に検証されている。
(スプレッドは、耐障害性のみを向上させる方式に見えるが、速度も向上する)
https://dev.classmethod.jp/articles/ec2-placement-group-strategy/
なお、プレイスメントグループには、以下に示す注意点が存在する。
- 既存のインスタンスを後からプレイスメントグループに追加することはできない。
インスタンス起動時に追加が必要となる。 - 一部のインスタンスタイプはプレイスメントグループを適用できない。
例えば、デフォルトのT2インスタンスは適用できない。
SSHによるアクセス
Amazon EC2において、インスタンス内部を操作する場合に第1の選択肢となる接続手法である。
なお、SSHを使用する場合は、セキュリティグループのファイアウォールにおいて、該当するポートを開ける必要がある。
AWSにおいては、公開鍵認証にキーペアを使用してSSH接続する。
詳細については、AWS - Amazon EC2#セキュリティ機能#キーペアのページおよびAWS - Amazon EC2#セキュリティ機能#セキュリティグループのページを参照すること。
セキュリティ機能
コンソールには以下に示す2つの機能があるが、これらは最低限の機能であり対策としては不十分である。
そのため、IAMによるポリシー設定とVPCのセキュリティ機能のページを参照すること。
名称 | 説明 |
---|---|
EBSとスナップショットの暗号化 | EBSやそのバックアップであるスナップショット内のデータを暗号化して、機密性を向上させる。 |
キーペア | キーペアで公開鍵認証によるSSH通信でインスタンスに接続して、外部からセキュアなインスタンスの操作を実現する。 |
セキュリティグループ | ネットワーク上のアクセス制御により、セキュリティを向上させる。 (ファイアウォールの役割) |
EC2 Image Builder | ネットワーク上のアクセス制御により、セキュリティを向上させる。 (ファイアウォールの役割) |
EBSとスナップショットの暗号化
EBS内のデータはデフォルトでは暗号化されていない。
そのため、暗号化を行いセキュリティレベルを高める必要がある。
EBSの暗号化は、AWSの暗号鍵管理サービスであるKMSの鍵を利用して、AES-256アルゴリズムで実行される。 (S3の暗号化方式の1つであるSSE-KMSと近い仕組みである)
また、暗号化されたEBSから作成されたスナップショットも同様に暗号化される。
EBSを暗号化するには、インスタンス起動時の[ストレージ]設定において、下図のように暗号化を有効にする。
EBSボリュームを直接作成する場合は、下図のように[このボリュームを暗号化する]チュッくボックスにチェックを入力して、暗号化に使用するキーを指定する。
※AWS管理キーについて (aws / ebs)
EBSの暗号化で使用できるキーとして、ユーザが独自に作成したKMSキー(カスタマーキー)以外に、デフォルトで準備されたAWS管理キー(aws / ebs)が存在する。
このAWS管理キーを使用することにより、KMSキーのポリシー管理が不要となるため、管理の手間を減らすことができる。
KMSキーとAWS管理キーの違いについて詳細を知りたい場合は、AWSの公式ドキュメントを参照すること。
キーペア
キーペアとは、Amazon EC2インスタンスへの接続において、公開鍵認証に使用する鍵を指す。
公開鍵をサーバ側で保持して、秘密鍵をクライアント側で保持することにより、公開鍵認証によるSSH接続を行う。
なお、一般的なオンプレで使用する公開鍵との違いがあることに注意する。
- 一般的なオンプレではクライアント側で両鍵を生成するが、キーペアではサーバ側(AWS側)で鍵を生成する。
- 秘密鍵をAWSからのダウンロードする場合は、1度しかできない。
秘密鍵を紛失した場合は、キーペアの再生成が必要となる。
また、一般的なオンプレと同様、公開鍵と秘密鍵の特性から以下に示すことが成り立つ。
- 秘密鍵を複数のクライアントで共有する事は避けるべきである。
- 公開鍵(インスタンス起動時に選択する鍵)を複数のインスタンスで共有することは構わない。
セキュリティグループ
セキュリティグループとは、インスタンスをグルーピングしてIPアドレスとポート番号に基づくアクセス制限を設定することにより、ファイアウォールのようなアクセス制御を実現する機能である。
セキュリティグループはVPC内部の機能のため、詳細を知りたい場合は、AWS - Amazon_EC2#VPCのページを参照すること。
EC2 Image builder
作成したAMIを長期間放置する場合、内部のOSやパッケージにパッチや更新が適用されないため、セキュリティに関する脆弱性が放置されて危険である。
このような事態を防ぐため、最新のパッケージがインストールされたAMIを自動で作成および展開できるEC2 Image builderと呼ばれる機能が準備されている。
EC2 Image builderの詳細を知りたい場合は、DevelopersIOのWebサイトを参照すること。
バックアップ
Amazon EC2インスタンスをサービスに利用する場合、耐障害性等を考慮すると定期的にバックアップを取得する必要がある。
バックアップには、AMIとスナップショットの2種類の方法があり、これらバックアップを自動取得するためのライフサイクルマネージャやAWS Backupを使用する。
AMIおよびスナップショットによるバックアップの違い
スナップショットを取得できるのはEBS使用時のみであるため、インスタンスストアは考慮しないものとする。
バックアップ元のインスタンス内容を再現するためには、AMIとスナップショット両方を取得する必要がある。
AMIとスナップショットは、下表に示すように保持している情報が異なり、両方が揃って初めてインスタンスの構成情報を再現できる。
種類 | 保持している情報 |
---|---|
AMI | インスタンスの構成情報 (アーキテクチャ + 紐付くスナップショット等) |
スナップショット | EBS内のデータ (OSの実イメージ + ユーザがインストールしたソフトウェア等) |
AMIは、スナップショットの紐付け情報も保持しているため、AMIはスナップショットを内包する存在とみなすこともできる。
したがって、実用上はAMIのみを取得することによりスナップショットを兼ねることができ、両者を別個にバックアップする必要性は低い。
下図に示すように、AMI作成画面には、同時にスナップショットを取得する機能が存在する。
また、AMIもスナップショットもインスタンスタイプやネットワーク等の情報は保持していないため、これらを起動テンプレートとして保存することにより、より迅速なインスタンスの復旧が実現できる。
一方、ライフサイクルマネージャでバックアップを自動化する場合は、より更新頻度の高いスナップショットを高頻度に、それほど頻繁に変化しないAMIは低頻度にしても構わない。
AMI / スナップショットの注意点
- AMIをバックアップとして使用する場合の注意点
- AMIを長期間放置する場合、セキュリティパッチが当たっていないため、EC2 Image builderで定期的に更新することを推奨する。
- AMIはリージョンごとに固有なため、リージョンごとに別個に取得が必要である。
- ただし、他のリージョンにコピーする機能がある。
- AMIを他のアカウントと共有することもできる。
- スナップショットの注意点
- スナップショットの作成と復元は有料である。
- スナップショットはリージョンごとに固有なため、リージョンごとに別個に取得が必要となる。
- ただし、他のリージョンにコピーする機能がある。
- スナップショットを他のアカウントと共有することもできる。
- スナップショットの詳細や作成手順を知りたい場合は、AWSの公式Webサイトを参照すること。
ライフサイクルマネージャ
ライフサイクルマネージャは、ルール(ポリシー)に基づき、インスタンスのバックアップ作成を自動化するための機能である。
インスタンスのバックアップにはAMIとスナップショットの2種類が存在するが、ライフサイクルマネージャではいずれかを選択することができる。
例えば、「毎日0時にスナップショットによるバックアップを作成する」というポリシーを作成することができる。
設定方法の詳細については、DevelopersIOのWebサイトを参照すること。
AWS Backup
ライフサイクルマネージャと似たサービスとして、AWS Backupがある。
ライフサイクルマネージャがAmazozn EC2の機能であるのに対して、AWS Backupは単独のサービスとして提供されているため、Amazon EC2以外のサービスのバックアップ (RDS、EFS、DynamoDB等)にも対応している。
AWS BackupにおけるAMIのバックアップ機能は、2020年末にライフサイクルマネージャも対応したため、Amazon EC2のバックアップであれば大きな隔たりはない。
ただし、世代管理の方法に差があったり、AWS BackupはAMIには含まれないインスタンスタイプ等の情報も保持するため、他のサービスとの併用の有無(例: RDS等と併用する等)を考慮して、どちらを使用するかを決定する。
インスタンスタイプ等を保持できるAWS Backupの方が汎用性が高いと思われる。
その他の機能
ネットワーク、セキュリティ、バックアップの機能以外にも、Amazon EC2には下表に示す機能が存在する。
名称 | 説明 |
---|---|
起動テンプレート | インスタンス起動時の設定をテンプレート登録して、次回以降の入力を簡略化する。 |
専有ホスト (Dedicated Hosts) |
1台の物理サーバを1人のユーザで専有して、ソフトウェアライセンスの持ち込みや該当するセキュリティ要件への対応を実現する。 |
キャパシティの予約 | キャパシティ(計算資源)の確保により、起動エラーを防いで特定の期間インスタンスの確実な起動を確保する。 |
起動テンプレート
インスタンスの起動時には、AMI、インスタンスタイプ、ストレージ等の様々な設定を適用することができる。
例えば、同じ設定のインスタンスを複数起動する場合、これらの設定を毎回入力していては面倒である。
そのため、インスタンス起動時の設定を起動テンプレートとして登録することにより、次回以降の設定を簡略化することができる。
特に、起動テンプレートはAuto Scalingの使用時は必須ともいえる機能であり、Auto Scalingグループ内の全てのインスタンスに当機能で作成した設定を渡すことができる。
専有ホスト (Dedicated Hosts)
一般的に、AWSのようなIaaSでは1台の物理サーバを複数台の仮想サーバで共有しており、複数のAWSアカウントのユーザが1台の物理サーバを共有した状態となることが多い。
専有ホストでは、1台の物理サーバを1人のユーザで専有することができ、以下に示す用途に用いられる。
- ユーザ独自のソフトウェアライセンスの持ち込み (AWSで提供されていないOS等)
- コンプライアンス(セキュリティ要件)上、他ユーザと同じサーバでの動作を避ける場合
専有ホストと似たサービスにハードウェア専有インスタンスがある。
ハードウェア専有インスタンスも、同一物理サーバ上で他ユーザのインスタンスが起動しないことが保証されるため、専有ホストと共通しているが、
あくまでインスタンス単位のサービスのため、ホスト(物理サーバ)単位で提供を受けられる専有ホストと比較すると、以下に示す制約が生じる。
専有ホスト | ハードウェア専有インスタンス | |
---|---|---|
課金単位 | ホスト(物理サーバ)単位 | インスタンス単位 |
ホスト単位のソフトウェアライセンス持ち込み | 可能 | 不可 |
ホスト内でのインスタンスの起動場所 | ユーザ側で制御可能 | ユーザ側で制御不可 (AWS側で自動決定) |
ソケット、コア、ホストIDの可視性 | あり | なし |
停止インスタンスの再起動時の使用ホスト | 同一ホストが保証される | 他のホストに移ることもある |
基本的に、ハードウェア専有インスタンスよりも専有ホストの方がユーザ側で利用する自由度が高い。
キャパシティの予約
キャパシティ予約とは、ある期間インスタンスを立ち上げられる権利を予約するサービスのことである。
「立ち上げられる権利」とは、インスタンスの立ち上げ時において、InsufficientInstanceCapacityと呼ばれるキャパシティ不足に由来するエラーが発生して、インスタンスの立ち上げに失敗する場合がある。
自動での立ち上げを設定している場合、失敗に気付かずに長時間に渡ってインスタンスが停止して、提供するサービスの停止に繋がる恐れがある。
このInsufficientInstanceCapacityエラーを防ぐため、キャパシティ(物理サーバ等の計算資源)を確保して、特定の期間インスタンスの確実な起動を確保するサービスがキャパシティの予約である。
キャパシティの予約は、対応するインスタンス購入方式に応じて下表から選択する。
名称 | 対応するインスタンス購入方式 |
---|---|
オンデマンドキャパシティ予約 | オンデマンドインスタンス |
キャパシティ予約 | リザーブドインスタンス |