EC2 インスタンスのテナント属性を理解する

こんにちは。池田です。今回は EC2 インスタンスのテナント属性(テナンシー: Tenancy)についてご紹介したいと思います。

テナント属性とは

このテナント属性については普段あまり意識することはないかと思います。通常オンデマンドインスタンスを起動する場合、デフォルトでは AWS 基盤側となるハードウェアは他の利用者と共有する状態で提供されます。

このスクリーンショットのように、EC2 インスタンスの作成画面において「テナンシー」という項目で選択可能なものが3種類あります。これらの違いについて言及されているドキュメントはハードウェア専有インスタンスというタイトルのページになりますので、これを利用したい場面がない場合はあまり気付かないかもしれません。
ここで前述のドキュメントを日本語だけではなく、英語で表示させた際の説明と比較してみます。
日本語では次のように記載されています。

ハードウェア専有インスタンス は、単一のカスタマー専用のハードウェアの Virtual Private Cloud (VPC) で実行される Amazon EC2 インスタンスです。
(中略)
注記
また、Dedicated Host はお客様専用の物理サーバーです。Dedicated Host では、インスタンスをサーバーに配置する方法について可視性と制御を高めることができます。詳細については、「Dedicated Hosts」を参照してください。

一方、英語では次のように記載されています。

Dedicated Instances are Amazon EC2 instances that run in a virtual private cloud (VPC) on hardware that's dedicated to a single customer.
(中略)
Note A Dedicated Host is also a physical server that's dedicated for your use. With a Dedicated Host, you have visibility and control over how instances are placed on the server. For more information, see Dedicated Hosts.

日本語では「ハードウェア専有インスタンス」と「Dedicated Host」という記載となっていますが、英語ではデフォルトのテナント属性以外のふたつはどちらも Dedicated で始まる名称です。単純にテナント属性が「dedicated」と表示されている場合、これは「Dedicated instance」であり「Dedicated host(s)」ではないことに注意が必要です(Dedicated Host の場合は host となります)。
そのため、テナント属性には「Default」「Dedicated Instance」「Dedicated Host(s)」の3種類があるというように、英語の呼び方で覚えておくのが良いと思います。

「Dedicated Instance」と「Dedicated Host(s)」

もう少し「Dedicated Instance」と「Dedicated Host(s)」について違いを整理したいと思います。
両者の違いについては、ドキュメントDedicated Hostsに記載されている比較表で確認することができます。

それぞれのドキュメント冒頭から抜粋すると以下の点が違うということがわかります。

Dedicated Instance

ハードウェア専有インスタンス は、単一のカスタマー専用のハードウェアの Virtual Private Cloud (VPC) で実行される Amazon EC2 インスタンスです。異なる AWS アカウントに属する ハードウェア専有インスタンス は、ハードウェアレベルで物理的に分離されています。さらに、単一の支払いアカウントにリンクされている AWS アカウントに属する ハードウェア専有インスタンス は、ハードウェアレベルで物理的に分離されています。ただし、ハードウェア専有インスタンス は、同じ AWS アカウントからの他のインスタンスで、ハードウェア専有インスタンス ではないインスタンスと、ハードウェアをシェアする可能性があります。

Dedicated Host

Amazon EC2 Dedicated Host は、EC2 インスタンスの容量を利用したお客様専用の物理サーバーです。Dedicated Hosts を利用すると、Windows Server、Microsoft SQL Server、SUSE、Linux Enterprise Server などのソフトウェアライセンスを、既存のソケット単位、コア単位、または VM 単位で使用できます。

つまり、Dedicated Instance が稼働しているホスト上には、それを利用している AWS アカウントが起動した別のインスタンスが動作することはあっても、他の AWS アカウントの起動したインスタンスが動作することはない。ということになります。
また、Dedicated Host は利用時にインスタンスファミリーを指定し、他の AWS アカウントのインスタンスはもちろん、利用者の AWS アカウントの別のインスタンスが起動されることもありません。ホスト上に起動可能なインスタンス数には上限数があります。起動可能数はAmazon EC2 Dedicated Hosts 料金表で確認できます。

それぞれの違いは請求の面にもあります。ドキュメントDedicated Hostsの比較表にも記載があるように、Dedicated Instance はインスタンスごとに請求が発生しますが、Dedicated Host は「ホスト単位」での請求となりそのホスト上で稼働するインスタンスには請求が発生しません。
ここまででテナント属性の種類とその違いについてご理解いただけたかと思いますので、以降ではそれぞれを利用する上でのコスト削減に関する違いなどをご紹介します。

2つの Dedicated を安く使うには

EC2 インスタンスをはじめ、AWS リソースにはリザーブドインスタンス(RI)などの割引サービスが提供されているものがあります。RI そのものについては下記ブログ記事でご紹介していますので、良かったらご一読ください。

読まなきゃ損($∀$)リザーブドインスタンスのススメ -2019春-

「Dedicated Instance」「Dedicated Host(s)」どちらも最終的に EC2 インスタンスを利用することに違いはないのですが、この RI についてはちょっと注意が必要です。
まず、Dedicated Instance を安く利用したい場合には Default テナンシーのインスタンスと同じように RI を購入することで実現できます。購入時に「ハードウェア専有」を選択する必要がありますが、これは EC2 RI の購入手順をご紹介した下記ブログ記事の手順 2 で触れていますので、こちらをご参照ください。

AWS再入門2018 リザーブドインスタンス購入編

Dedicated Host の場合は呼び方を含め EC2 RI とは異なります。まず、RI ではなく「ハードウェア専有ホスト(Dedicated Host)の予約」を購入することになります。
また、購入するには既に Dedicated Host を利用していることが前提となり、購入時には「インスタンスファミリー(インスタンスサイズではありません)」「支払い方法」「年数」「AZ」を指定する必要があります。また、EC2 RI のようなコンバーティブルタイプの提供はなく、スタンダードタイプのみとなります。詳細はAmazon EC2 Dedicated Hosts 料金表ページの「予約料金」で確認することができます。
なお、購入に関する注意点はDedicated Hostsのページ最下段に記載されていますので、必ず確認しておきましょう。

予約を購入するには、アカウントでアクティブな Dedicated Hosts が必要です。各予約は、アカウントの単一で特定の Dedicated Host が対象です。予約は、インスタンスサイズではなくホストのインスタンスファミリーに適用されます。インスタンスサイズが異なる 3 つの Dedicated Hosts (m4.xlarge、m4.medium、および m4.large) がある場合、1 つの m4 予約をこれらすべての Dedicated Hosts に関連付けることができます。予約のインスタンスファミリーとリージョンは、関連付ける Dedicated Host のインスタンスファミリーとリージョンに一致する必要があります。
予約が Dedicated Host に関連付けられている場合、Dedicated Host は予約期間が終了するまで解放できません。

Dedicated Host の予約手順

Dedicated Host の予約を購入する手順についてご紹介します。AWS ドキュメントもご確認ください。

1: AWSマネジメントコンソールにログインした後、EC2ダッシュボードから専有ホストページへ移動する

2: Dedicated Host の予約を選択する

3: Dedicated Host の予約の購入を選択する

4: 必要事項を入力していく
4-1: ステップ1 で購入したい予約の情報を選択する
4-2: 提供の検索をクリックする
4-3: 表示された内容を確認し目的のものを選択する
4-4: 適用させたいホストを選択する
4-5: 間違いなければ確認ボタンをクリックする

5: 購入対象の最終確認を実施し、間違いなければ購入ボタンをクリックする

6: 正常に購入できたことを確認する

7: 手順 6 の画面を閉じると一覧画面に遷移するので、状態が保留中の支払いとなっていることを確認しそのまま待機する

8: 状態がアクティブとなったら完了です

まとめ

各種ライセンスやセキュリティ要件によってはこのテナント属性を意識する必要があります。この時にそれぞれの要件に対して適切なテナント属性を選択することはもちろん、同時にそれぞれに対するコスト削減の手法についても理解していると嬉しいですよね。そんな場面でこの記事を思い出していただけたら幸いです。