EC2 インスタンスのインベントリを作成する
Amazon EC2 は、オンデマンドでスケーラブルなコンピューティング能力を提供します。EC2 インスタンスは AWS ネットワーク上の仮想サーバーです。
次の表で EC2 インスタンスの主要な特徴を説明します。システム管理者は、本書に記載されているガイダンスを使用してこれらの特徴に関する情報を取得し、それを利用して、オンプレミスまたは別のクラウドプロバイダーのネットワークで実行される機能的に同等のサーバーを設定できます。
| 特性 | 説明 |
|---|---|
| 地理的場所 | Amazon EC2 は、世界中のすべての AWS リージョンでホストされています。ロケーションは、インスタンスが顧客の近くに配置されるような場所を選択します。複数のロケーションでインスタンスを起動できます。 |
| ハードウェア仕様 | Amazon EC2 では、幅広いインスタンスタイプの選択肢があり、さまざなユースケースに合わせて最適化できます。インスタンスに選択するインスタンスタイプによって、コンピューティング、メモリ、ネットワーキング、およびストレージのリソースが決まります。 |
| イメージ | Amazon マシンイメージ (AMI) には、起動時にインスタンスにインストールするソフトウェアが含まれています。オペレーティングシステム、ソフトウェアパッケージ、カスタム設定などが含まれます。 |
| IP アドレスと DNS ホスト名 | インスタンスは、プライベート IP アドレスとプライベート DNS ホスト名を受信します。インスタンスにパブリック IP アドレスを設定すると、パブリック DNS ホスト名も受信します。 |
| 「セキュリティグループのルール」 | インスタンスに関連付けられたセキュリティグループルールによって、許可されるインバウンドトラフィックとアウトバウンドトラフィックが決まります。 |
| ユーザーデータ | ユーザーデータは、起動時にインスタンスで利用可能になります。シェルスクリプト (Linux) または PowerShell スクリプト (Windows) で構成されます。 |
地理的場所
Amazon EC2 は、世界中のすべての AWS リージョンで利用できます。各リージョンは、個別の地理的領域です。大部分のユーザーに近いリージョンをサーバー向けに選択すると、ネットワークレイテンシーを低減できます。
Amazon EC2 グローバルビューを使用すると、すべてのリージョンの Amazon EC2 インスタンスを一覧表示できます。AWS マネジメントコンソールおよび API では、各リージョンのインスタンスを個別に一覧表示する必要があります。
これが重要な理由
インスタンスの場所を特定したら、必要に応じて、機能的に同等のサーバーを同じロケーションにデプロイするか、それとも異なるロケーションにデプロイするかを決定できます。
すべてのリージョンの EC2 インスタンスの概要を取得するには
-
Amazon EC2 Global View コンソール (https://console.aws.amazon.com/ec2globalview/home
) を開きます。 -
[リージョンエクスプローラー] タブの [概要] で、[インスタンス] のリソース数を確認します。これには、インスタンスの数とリージョンの数が含まれます。下線付きのテキストをクリックして、インスタンスの数がリージョン全体にどのように分散しているかを確認します。
-
[グローバル検索] タブで、クライアントフィルター [リソースタイプ = インスタンス] を選択します。リージョンまたはタグを指定することで、結果をさらにフィルタリングできます。
AWS CLI を使用してリージョンにある EC2 インスタンスの数を取得するには
次の describe-instances コマンドを使用して、指定したリージョンにあるインスタンスの数を調べます。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。
aws ec2 describe-instances \ --regionus-east-2\ --query "length(Reservations[*].Instances[])"
以下は出力の例です。
27
インスタンス数ではなくインスタンス ID のリストを取得するには、代わりに次の --query パラメータを使用します。
--query "Reservations[*].Instances[].InstanceId"
ハードウェア仕様
EC2 インスタンスに指定するインスタンスタイプによって、使用可能なコンピューティング、メモリ、ストレージ、ネットワーキングのリソースが決まります。各インスタンスファミリはコンピューティング、メモリ、ネットワーク、ストレージのリソースが異なるバランスで構成されています。詳細については「Amazon EC2 インスタンスタイプガイド」を参照してください。
これらが重要な理由
インスタンスのハードウェア仕様を決定したら、機能的に同等のサーバーに必要な最小仕様を決定できます。
インスタンスで使用するインスタンスタイプの概要を取得するには
次の describe-instances コマンドを使用します。sed コマンドを実行すると、角括弧を含む行と空の行が削除されます。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。
aws ec2 describe-instances \ --query "Reservations[*].Instances[].InstanceType" | sed 's/[][]//g;/^$/d' | sort | uniq -c | sort -nr
以下は出力の例です。
20 "c6i.4xlarge",
5 "t2.micro",
2 "g6e.2xlarge",
特定のインスタンスタイプに関する情報を取得するには
次の describe-instance-types コマンドを使用すると、インスタンスタイプの説明が表示されます。--query パラメータには、出力内に指定されたフィールドのみが含まれます。これらは基本的な特徴です。必要な追加フィールドを含めるか、「Amazon EC2 インスタンスタイプのガイド」の「Amazon EC2 インスタンスタイプの仕様」を参照することもできます。
aws ec2 describe-instance-types \ --instance-typesc6i.4xlarge t2.micro g6e.2xlarge\ --query "InstanceTypes[*].[InstanceType,VCpuInfo.DefaultVCpus,MemoryInfo.SizeInMiB,NetworkInfo.NetworkPerformance]" \ --output table
以下は出力の例です。列は、インスタンスタイプ、vCPU、メモリ (GiB)、ネットワーク帯域幅 (Gbps) です。
------------------------------------------------------
| DescribeInstanceTypes |
+--------------+-----+--------+----------------------+
| t2.micro | 1 | 1024 | Low to Moderate |
| c6i.4xlarge | 16 | 32768 | Up to 12.5 Gigabit |
| g6e.2xlarge | 8 | 65536 | Up to 20 Gigabit |
+--------------+-----+--------+----------------------+
イメージ
Amazon マシンイメージ (AMI) は、オペレーティングシステム、サービス、開発ツール、アプリケーションなど、起動時にインスタンスにインストールされるソフトウェアを提供します。AMI を他の形式にエクスポートすると、他のサーバーで使用できます。
これらが重要な理由
インスタンスの AMI を決定したら、機能的に同等のサーバーで必要なイメージを計画できます。AMI を他の場所で使用できる形式にエクスポートできる場合があります。そうでない場合、各 AMI から起動したインスタンスに接続し、インストールされている内容と設定を確認して、必要なものがすべてコピーされていることを確認する必要があります。
インスタンスの AMI を取得するには
次の describe-instances コマンドを使用します。sed コマンドを実行すると、角括弧を含む行と空の行が削除されます。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。
aws ec2 describe-instances \ --query "Reservations[*].Instances[].ImageId" | sed 's/[][]//g;/^$/d' | sort | uniq -c | sort -nr
以下は出力の例です。
20 "ami-0a70b9d193ae8a79",
5 "ami-07d9cf938edb0739b",
2 "ami-09245d5773578a1d6",
特定の AMI に関する情報を取得するには
次の describe-images コマンドを使用します。--query パラメータには、出力内に指定されたフィールドのみが含まれます。必要な追加フィールドを含めることができます。
aws ec2 describe-images \ --image-idami-0a70b9d193ae8a79 ami-07d9cf938edb0739b ami-09245d5773578a1d6\ --query "Images[*].{ID:ImageId,CreateDate:CreationDate,Name:Name,Description:Description}"
以下は出力の例です。
[
{
"ID": "ami-0a70b9d193ae8a799",
"CreateDate": "2025-03-01T02:22:41.000Z",
"Name": "web-server-3.1",
"Description": "Image for web servers"
},
{
"ID": "ami-07d9cf938edb0739b",
"CreateDate": "2025-02-01T23:59:03.000Z",
"Name": "awesome-application-11.5",
"Description": "Image for Awesome Application"
},
{
"ID": "ami-09245d5773578a1d6",
"CreateDate": "2025-01-31T02:22:41.000Z",
"Name": "monitoring-4.2",
"Description": "Monitoring software"
}
]
AMI から VM ファイルを作成するには
export-image コマンドを使用します。サポートされているイメージ形式は、VHD (Citrix Xen および Microsoft Hyper-V と互換性あり)、VMDK (VMware ESX および VMware vSphere と互換性あり)、および raw 形式 (KVM および Xen ハイパーバイザーと互換性あり) です。VM Import/Export の要件および制限事項については、「VM Import/Export の要件」を参照してください。
IP アドレスと DNS ホスト名
ユーザーは、パブリック DNS ホスト名を使用してインターネット経由で EC2 インスタンスに接続します。EC2 インスタンスのパブリック DNS ホスト名は、そのパブリック IP アドレスに解決されます。EC2 インスタンスはプライベート IP アドレスを使用して互いに通信できます。
これらが重要な理由
IP アドレスを使用すると、デバイスはローカルネットワークまたはインターネット経由で相互に通信できます。インスタンスの IP アドレスと DNS 名をメモすることで、機能的に同等のサーバーが、インスタンスと同じクライアントまたはデバイスと通信できるようになります。例えば、ロードバランサー設定や、DNS プロバイダー用に作成した DNS レコードを更新できます。
インスタンスの IP アドレスと DNS ホスト名を取得するには
次の describe-instances コマンドを使用します。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。--query パラメータには、出力内に指定されたフィールドのみが含まれます。必要な追加フィールドを含めることができます。
aws ec2 describe-instances \ --query "Reservations[*].Instances[].[InstanceId,PrivateIpAddress,PublicDnsName]" \ --output table
以下は出力の例です。列は、インスタンス ID、プライベート IPv4 アドレス、パブリック IPv4 DNS 名です。
----------------------------------------------------------------------------------------
| DescribeInstances |
+---------------------+------------+---------------------------------------------------+
| i-0bac57d7472c89bac | 10.0.2.139 | ec2-192-0-2-142.us-east-2.compute.amazonaws.com |
| i-0fa8b7678975a3fff | 10.0.14.85 | ec2-198-51-100-56.us-east-2.compute.amazonaws.com |
...
...
| i-08fd74f3f1595fdbd | 10.0.1.241 | ec2-203.0.113.13.us-east-2.compute.amazonaws.com |
+---------------------+------------+---------------------------------------------------+
「セキュリティグループのルール」
セキュリティグループは、仮想ファイアウォールとして機能します。セキュリティグループを EC2 インスタンスに関連付けると、そのルールにより、特定のポートとプロトコルを介した EC2 インスタンスのインバウンドトラフィックとアウトバウンドトラフィックが許可されます。
これらが重要な理由
サーバーに到達できるインバウンドトラフィックとサーバーから出ることができるアウトバウンドトラフィックを決定した後で、機能的に同等のサーバーに必要なファイアウォールルールを計画できます。
インスタンスのセキュリティグループを取得するには
次の describe-instances コマンドを使用します。sed コマンドを実行すると、角括弧を含む行と空の行が削除されます。このコマンドは、インスタンスがあるリージョンごとに実行する必要があります。
aws ec2 describe-instances \ --query "Reservations[*].Instances[].SecurityGroups[].GroupId" | sed 's/[][]//g;/^$/d' | sort | uniq -c | sort -nr
以下は出力の例です。
27 "sg-01dd3383691d02f42",
10 "sg-08c77cc910c0b3b2c",
2 "sg-00f4e409629f1a42d",
セキュリティグループのインバウンドルールを取得するには
次の describe-security-group-rules コマンドを使用して、IsEgress が false である指定されたセキュリティグループのルールを表示します。
aws ec2 describe-security-group-rules \ --filters Name=group-id,Values=sg-01dd3383691d02f42\ --query 'SecurityGroupRules[?IsEgress==`false`]'
以下は出力の例です。最初のルールはデフォルトのインバウンドルールで、このセキュリティグループに割り当てられたすべてのリソースからのインバウンドトラフィックを許可します。もう 1 つのルールは、指定されたプレフィックスリストの IP アドレスからの SSH トラフィックを許可します。プレフィックスリストの CIDR ブロックを記述するには、describe-prefix-lists コマンドを実行します。
[
{
"SecurityGroupRuleId": "sgr-06c8b42574a91db1b",
"GroupId": "sg-01dd3383691d02f42",
"GroupOwnerId": "123456789012",
"IsEgress": false,
"IpProtocol": "-1",
"FromPort": -1,
"ToPort": -1,
"ReferencedGroupInfo": {
"GroupId": "sg-01dd3383691d02f42",
"UserId": "123456789012"
},
"Tags": [],
"SecurityGroupRuleArn": "arn:aws:ec2:us-west-2:123456789012:security-group-rule/sgr-06c8b42574a91db1b"
},
{
"SecurityGroupRuleId": "sgr-0886a5d46afcd1758",
"GroupId": "sg-01dd3383691d02f42",
"GroupOwnerId": "123456789012",
"IsEgress": false,
"IpProtocol": "tcp",
"FromPort": 22,
"ToPort": 22,
"PrefixListId": "pl-f8a6439125e7bf465",
"Tags": [],
"SecurityGroupRuleArn": "arn:aws:ec2:us-east-2:123456789012:security-group-rule/sgr-0886a5d46afcd1758"
}
]
セキュリティグループのアウトバウンドルールを取得するには
次の describe-security-group-rules コマンドを使用して、IsEgress が true である指定されたセキュリティグループのルールを表示します。
aws ec2 describe-security-group-rules \ --filters Name=group-id,Values=sg-01dd3383691d02f42\ --query 'SecurityGroupRules[?IsEgress==`true`]'
以下は出力の例です。これには、すべてのアウトバウンド IPv4 トラフィックを許可するデフォルトのアウトバウンドルールのみが含まれます。
[
{
"SecurityGroupRuleId": "sgr-048f09a719247dce7",
"GroupId": "sg-01dd3383691d02f42",
"GroupOwnerId": "123456789012",
"IsEgress": true,
"IpProtocol": "-1",
"FromPort": -1,
"ToPort": -1,
"CidrIpv4": "0.0.0.0/0",
"Tags": [],
"SecurityGroupRuleArn": "arn:aws:ec2:us-east-2:123456789012:security-group-rule/sgr-048f09a719247dce7"
}
]
ユーザーデータ
EC2 インスタンスを起動するときに、ユーザーデータを使用してシェルスクリプトをインスタンスに渡すことができます。ユーザーデータは base64 でエンコードされているため、スクリプトを読み取るにはユーザーデータをデコードする必要があることに注意してください。
これが重要な理由
インスタンスの設定の一環として起動時にコマンドを実行している場合は、機能的に同等のサーバーを設定する際にも同じタスクを実行する必要がある場合があります。
インスタンスのデコードされたユーザーデータを表示するには
次の describe-instance-attribute コマンドを使用します。base64 コマンドはユーザーデータをデコードします。
aws ec2 describe-instance-attribute \ --instance-idi-1234567890abcdef0\ --attribute userData \ --output text \ --query "UserData.Value" | base64 --decode
以下は出力の例です。
#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on
関連リソース
EC2 インスタンスの追加の特徴は次のとおりです。
以下を使用して EC2 インスタンスを起動しているか、EC2 インスタンス間でトラフィックを分散しているかどうかを確認できます。