AWS 入門ブログリレー 2024〜 Amazon EC2 編〜

Amazon EC2 について2024年時点の情報をまとめてみました。AWSサービス入門記事として是非ご活用下さい。
2024.05.13

当エントリは弊社 AWS 事業本部による『AWS 入門ブログリレー 2024』の 43 日目のエントリです。

このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。

AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。

では、さっそくいってみましょう。今回のテーマは『Amazon EC2』です。

EC2 とは

Amazon EC2(Elastic Compute Cloud)は、Amazon Web Services(AWS)が提供するクラウドコンピューティングサービスの 1 つです。
AWS 管理のデータセンター上にホスト(物理マシン)があり、Hypervisor 層の上に EC2 インスタンスが構築されています。

EC2 を使用することで、
必要なだけサーバーを追加・削除できる柔軟性を確保でき、
必要なときだけ起動し、料金は起動している時間に応じて発生するオンデマンドの料金を享受でき
負荷に応じてインスタンスの数やサイズを調整可能なスケーラビリティを確保することができます。

EC2 の基礎知識

EC2 はいくつかの要素をもとに構築できます。

AMI とは

AMI(Amazon Machine Image)は、EC2 インスタンスを起動する際のテンプレートです。
OS やアプリケーションの設定などインスタンスの起動に必要な情報が含まれており、
AWS 提供の AMI や AWS Marketplace 経由以外にも自分で作成し活用することもできます。

インスタンスタイプとは

EC2 では複数のインスタンスタイプが提供されており、それぞれ異なる仕様や性能を持っています。

インスタンスタイプは下図のような命名規則で成り立っています。

引用: [AWS Black Belt Online Seminar]Amazon Elastic Compute Cloud (Amazon EC2)

インスタンスファミリーでは、インスタンスファミリー毎に各ユースケースに応じたプロセッサが使用されていたり対応しているアーキテクチャが異なったりと様々な違いがあります。

インスタンスサイズでは、スペックの大きさを表しており、サイズが 1 つ大きくなるにつれてスペックが倍々に増えていきます。 例えば c5 系を見ると下記のようになります。

タイプ vCPU メモリ
c5.large 2 4GiB
c5.xlarge 4 8GiB
c5.2xlarge 8 16GiB

最新のインスタンスタイプの一覧は AWS 公式ドキュメントを参照ください。

EBS とは

EBS(Elastic Block Store)は、EC2 で使用できるブロックストレージサービスです。
EBS については明日の入門ブログにて詳しく解説いたします。

ENI とは

ENI(Elastic Network Interface)は、EC2 に関連付けられた仮想ネットワークインターカードを表す機能です。
主に IP アドレスに関しての情報を持ちますが、セキュリティグループも ENI に紐づきます。

EC2 インスタンスのリソース全体に対してセキュリティグループが紐づいているように思われがちですが、厳密には EC2 に紐づく ENI に対してセキュリティグループが設定されています。

EC2 起動時に高度な詳細で設定できること

EC2 の作成画面では、高度な詳細のセクションで様々な設定を行えます。
それぞれ現在時点で設定できる項目をぞれぞれ見ていきます。

項目 内容
ドメイン結合ディレクトリ AWS Directory Service で作成しているドメインを選択できます。
AWS Directory Service でドメイン管理をしている場合に EC2 起動時に自動的にドメインに参加させることができます。
参考: 「インスタンス結合ディレクトリ」ってなに?EC2 の Launch 時にドメイン結合ディレクトリを使ってみた | DevelopersIO
IAM インスタンスプロフィール インスタンスプロファイルは、EC2 に紐づく IAM ロールを設定する項目です。
通常、AWS リソースへ直接 IAM ロールを関連付ける形になりますが、EC2 においてはインスタンスプロファイルという箱のようなものを経由してインスタンスプロファイルと IAM ロール関連付けることで IAM ロールを EC2 に渡し、IAM ロールの権限で特定のアクションを行えます。
ホスト名のタイプ 起動した EC2 のホスト名のフォーマットを選択できます。
「IP 名」を選択した場合は、
{プライベート IP アドレス}-{リージョン ID}.compute.internal
(例:ip-10-0-0-10.ap-northeast-1.compute.internal
「リソース名」を選択した場合は、
{インスタンス ID}-{リージョン ID}.compute.internal
(例:i-xxxxxxxxxxxxxxxxx.ap-northeast-1.compute.internal
となります。
DNS ホスト名 EC2 の IPv4 や IPv6 アドレスの名前解決を有効化できるかを設定可能です。
EC2 を起動するサブネットによってデフォルトで有効、無効となっていることがあります。
インスタンスの自動復旧 システムステータスチェックが失敗した際に Auto Recovery により自動復旧ができます。
「デフォルト」を選択の状態がオンとなります。
シャットダウン動作 OS レベルでのシャットダウン操作を行った場合の挙動を設定できます。例えば Linux サーバーにおいて shutdown コマンドを使用した場合に EC2 インスタンスが停止するか終了するかを選択できます。
停止 - 休止動作 休止動作を有効化するかどうかを選択できます。
休止とは、スリープ状態のようなものでただ停止するだけでなくメモリ上のデータを EBS に保存することで一時停止の状態を保持できます。
終了保護 EC2 インスタンスの終了動作から保護し終了できないような状態を設定できます。停止保護同様、OS レベルでのシャットダウン動作には効力が及びません。
停止保護 EC2 インスタンスの停止動作から保護し停止できないような状態を設定できます。終了保護同様、OS レベルでのシャットダウン動作には効力が及びません。
CloudWatch モニタリングの詳細 EC2 の詳細モニタリングを有効化ができます。詳細モニタリングは有料ではありますが、全てのメトリクスを 1 分間隔で利用できます。(基本モニタリングは 5 分間隔で利用できます。)
Elastic GPU Windows の EC2 インスタンスに対して GPU を追加できる設定です。現在時点ではサポート終了しているため、 G4ad、G4dn、G5 系のインスタンスタイプを使用いただく必要があります。
クレジット仕様 バースト可能パフォーマンスインスタンスであるt 系インスタンスにおいて CPU クレジットの消費タイプを選択できます。
参考: ちょっと待ってください!あなたが使うべきは本当に T 系インスタンスですか!? | DevelopersIO
プレイスメントグループ 事前に作成したプレイスメントグループを選択できます。
参考: EC2 のプレイスメントグループを活用するとネットワークパフォーマンスを向上したりハードウェア障害を軽減できます | DevelopersIO
EBS 最適化インスタンス EC2 と EBS 間に追加の専用スループットを有効化するかどうかを選択できます。
インスタンスタイプによって有効化できるものとできないものがあるため一覧は下記ページを参照してください。
参考: Amazon EBS 最適化インスタンスを使用する - Amazon Elastic Compute Cloud
購入オプション スポットインスタンスをリクエストするかどうかを選択できます。
キャパシティーの予約 インスタンス起動時にキャパシティ予約内で起動することができる設定です。キャパシティ予約については下記を参照ください。
参考: EC2 起動時の Insufficient Instance Capacity エラーをオンデマンドキャパシティ予約で回避する | DevelopersIO
テナンシー EC2 インスタンスが起動されるホスト自体を専有するかどうかを選択できます。下記ブログが参考になりました。
参考: 共有ホストと専有ホスト(Dedicated Host) | リウコム Tech ブログ
RAM ディスク ID 任意の RAM ディスク ID を指定できます。
カーネル ID 任意のカーネル ID を指定できます。
Nitro Enclave EC2 インスタンスの内部に分離されたアプリケーション環境を作成しローカルアクセスのみ受け付けることができる環境を有効化できます。
参考: EC2 で稼働するアプリケーションにさらなる環境分離を提供!!Nitro Enclaves を試してみた | DevelopersIO
ライセンス設定 事前に作成済みな AWS License Manager ルールを適用できます。
アクセス可能なメタデータ インスタンスメタデータへのアクセスを無効にするか設定できます。無効にした場合、インスタンスプロファイルを参照できなくなったりユーザーデータを使用できなくなったりなどの弊害があります。
メタデータの転送 EC2 のメタデータを取得するために、IMDSv2 の IPv6 アドレスへ到達できるようにする設定です。AWS Nitro System 上に構築されたインスタンスを IPv6 専用サブネットに起動する場合にのみ使用できます。
メタデータのバージョン メタデータのバージョンを v1 または v2/v2 のみのいずれかからできます。
メタデータレスポンスのホップ制限 メタデータトークンが移動できるネットワークホップの数を指定できます。
メタデータのタグを許可 有効化する事で、HTTP リクエストによってインスタンスに紐づくタグを取得できます。
ユーザーデータ - オプション 任意で特定のシェルスクリプトまたは cloud-init ディレクティブを記載する事で、インスタンス起動時に指定されたスクリプトを実行できます。

最新は下記 AWS 公式ドキュメントを参照ください。

EC2 の料金体系

インスタンス料金

インスタンス料金は、選択したインスタンスタイプと利用時間に応じて発生します。
料金は時間単位で計算されますので、必要なときにのみインスタンスを起動すると効率的です。

このような起動している時間のみ課金される体系をオンデマンドインスタンスと言います。

AWS ではよりコスト効率を上げるための課金体系があります。
その方法については下記ブログをご参照ください。

Amazon EC2 スポットインスタンスの基礎 AWS Black Belt Online Seminar

EBS 料金

EBS は EC2 インスタンスのストレージとして利用されます。ストレージの容量や使用量に応じて料金が発生します。
具体的な料金体系は明日の EBS 入門ブログでご紹介します。

データ転送料金

EC2 インスタンスで処理したデータの送信量や受信量に応じて、データ転送料金が発生します。
リージョン間のデータ転送やインターネット経由の通信などが該当します。

パブリック IP アドレス(Elastic IP アドレス)

パブリック IP アドレスおよび Elastic IP アドレスを使用していない場合には当然発生しませんが、
もし使用している場合はアタッチしているか問わず0.005USD発生します。

参考

終わりに

以上、『AWS 入門ブログリレー 2024』の 43 日目のエントリ『Amazon EC2』編でした。
次回、5/14 は引き続き平木による「Amazon EBS 編」の予定です!