目次
Amazon EC2 完全ガイド 2026
初心者から実務者向けの包括的解説
Amazon EC2(Elastic Compute Cloud) は、AWS が提供するクラウド仮想サーバーサービスであり、秒単位で起動・停止できるスケーラブルなコンピューティング環境です。CPU / メモリ / ストレージ / ネットワークを自由に選択し、Linux / Windows / macOS / RHEL など複数の OS を実行でき、オンプレミスからの Lift & Shift 移行から最新 AI/ML 推論まで、AWS コンピューティングの 基盤サービス として機能します。本ドキュメントは、EC2 の概念・インスタンスタイプ・購入オプション・セキュリティ・運用・最新動向を体系的に解説する包括的ガイドです。
ドキュメントの目的
本ガイドは以下を対象としています。
- 初心者向け: EC2 とは何か、インスタンスとは何かを学びたい方
- 開発者・SRE 向け: インスタンス設計・起動・スケーリング・監視を実装したい方
- アーキテクト向け: EC2 / ECS / Lambda の選定基準を理解したい方
- 意思決定者向け: EC2 vs Fargate vs Lambda の比較・コスト最適化・投資判断
EC2 の位置づけ
EC2 は、AWS コンピューティングスタックの 最も制御性の高い選択肢 です。
- EC2(本ドキュメント):フルコントロール、OS カーネル調整可能、すべてのインスタンスタイプ利用可
- ECS / EKS:コンテナ化・Kubernetes、一部管理
- Lambda:サーバーレス、最小管理、秒単位課金
- Fargate:コンテナ、インスタンス管理不要
2026 年の EC2 エコシステム
- Graviton4(c7g系 後継):最新 Graviton4 プロセッサで Intel/AMD 比 20-30% コスト削減
- AMD EPYC (r8g 系):第 8 世代メモリ最適化インスタンス、512GB+ メモリ対応
- Trainium / Inferentia:ML トレーニング(trn1)・推論(inf2)専用チップ、ジェネレーティブ AI
- Local Zones:大都市圏での超低レイテンシ
- Outposts:オンプレミスに AWS インフラ配置
- Mac インスタンス:M3 Max / M4 による iOS/macOS 開発・ビルド
- AI/ML 統合:SageMaker との統合強化、AutoML
目次
- 概要
- EC2 が解決する課題
- 主な特徴
- アーキテクチャ
- インスタンスタイプ
- ストレージオプション
- ネットワーキング
- 購入オプション
- Auto Scaling と ELB 連携
- セキュリティ
- 運用・監視
- 主要ユースケース
- 他の類似ツールとの比較
- クライアントとエコシステム
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース
- 実装例・活用シーン
- 導入ロードマップ
- 実装チェックリスト
- まとめ
- 参考文献
概要
初心者向けメモ: EC2 は「IaaS(Infrastructure as a Service)」です。サーバー = インスタンス と呼ぶ仮想マシンを、オンデマンドで秒単位で起動・停止でき、OS ディスク(EBS)・ネットワーク(VPC)・IAM ロール等を自由に設定できます。「料金は秒単位」「ハードウェアは共有」「スケーリングは自動」が 3 つの特徴です。
EC2 公式定義:
“Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides secure, resizable compute capacity in the cloud.”
EC2 インスタンスは、VPC 内にデプロイされ、EBS ボリュームをストレージに、Security Group でネットワークをフィルタリングし、IAM Role で AWS API アクセス権を管理します。
このサービスを選ぶ理由
なぜ EC2 でないといけないのか?
| 理由 | 詳細 |
|---|---|
| フルコントロール | Lambda / Fargate / App Runner 等マネージドでは OS レベルのカーネルパラメーター調整・特定ランタイム固定が難しい場合でも EC2 は完全な OS 制御を提供 |
| 既存システムの Lift & Shift | オンプレミスアプリをコード変更なしにそのままクラウド移行、ライセンス持込(BYOL)可 |
| 幅広いインスタンスファミリー | 汎用(m系)・コンピュート最適化(c系)・メモリ最適化(r系)・GPU(p/g系)・HPC(hpc系)で用途別最適化 |
| スポットインスタンス | 最大 90% コスト削減で大規模バッチ処理・ML トレーニング実現 |
| Graviton / カスタムチップ | AWS 製プロセッサで 20-40% コスト効率向上、AI 推論(Inferentia)・訓練(Trainium)専用チップ |
具体的なユースケース
- レガシー Web アプリの Lift & Shift 移行(オンプレ → EC2 + RDS)
- GPU インスタンス(p4d / p3)での深層学習モデルトレーニング
- ハイメモリインスタンス(r7g / x2gd)での SAP HANA / Oracle DB 稼働
- Trainium(trn1)インスタンスでの大規模言語モデル訓練
- スポットフリートを使った大規模バッチ処理(画像変換・ログ解析)
- Windows Server + SQL Server ライセンス持込(BYOL)での Windows 構築
- HPC Cluster プレイスメントグループでの計算化学・気象シミュレーション
- Mac インスタンス(m2 / m3)での iOS/macOS アプリビルド
EC2 が解決する課題
| 課題 | 従来(オンプレミス) | EC2 での解決 |
|---|---|---|
| ハードウェア調達 / コスト | 購入・納品・保守で数ヶ月・初期投資大 | 秒単位起動、従量課金、CapEx → OpEx |
| スケーリング | 手動追加・廃棄、事前計画必須 | Auto Scaling で自動スケーリング |
| レイテンシ | 地理的制約、リージョン構築困難 | 多地域リージョン + CloudFront + Local Zones |
| セキュリティアップデート | OS パッチ適用管理が業務 | Systems Manager Patch Manager で自動化 |
| ディザスタリカバリ / バックアップ | テープ・外部媒体、複雑 | EBS Snapshot / Data Lifecycle Manager で自動化 |
主な特徴
| 特徴 | 説明 |
|---|---|
| 秒単位起動 | インスタンス起動 30-60 秒、料金は秒単位 |
| インスタンスタイプの豊富さ | 500+ 種類以上の組み合わせ(CPU・メモリ・GPU・ネットワーク) |
| 独立したネットワーク設定 | VPC / ENI で複数ネットワークインターフェイス構成 |
| インスタンスメタデータサービス | EC2 内から AWS API 呼び出し、IAM Role で権限管理 |
| スケーラビリティ | Auto Scaling + ELB で負荷に応じた自動スケーリング |
| リザーブドインスタンス / Savings Plans | 1-3 年コミットで最大 72% コスト削減 |
| スポットインスタンス | 予備容量を最大 90% 割引で利用可能 |
| カスタム AMI | Packer / EC2 Image Builder で黄金イメージを IaC で管理 |
| 複数 OS 対応 | Amazon Linux 2 / Ubuntu / RHEL / SUSE / CentOS / Windows / macOS / Debian |
| EBS-optimized / ENA / Placement Group | 高パフォーマンス・ロー遅延ネットワーク構成 |
アーキテクチャ
初心者向けメモ: EC2 インスタンスは VPC 内に配置 され、EBS ボリュームでストレージ・ENI でネットワーク・IAM Role で権限を管理します。「インスタンスは VPC の何かの Subnet(サブネット)に入る」が基本。
【図1】EC2 インスタンスの配置構造:
graph TD
AWS["AWS リージョン(東京・オレゴン等)"]
AWS --> AZ1["AZ-1a(アベイラビリティゾーン)"]
AWS --> AZ2["AZ-1c"]
AZ1 --> VPC["VPC<br/>10.0.0.0/16"]
AZ2 --> VPC
VPC --> Sub1["Subnet-1a<br/>10.0.1.0/24"]
VPC --> Sub2["Subnet-1c<br/>10.0.2.0/24"]
Sub1 --> Inst1["Instance i-001<br/>m6i.large<br/>10.0.1.10"]
Sub2 --> Inst2["Instance i-002<br/>m6i.large<br/>10.0.2.10"]
Inst1 --> EBS1["EBS vol-001<br/>gp3 100GB"]
Inst2 --> EBS2["EBS vol-002<br/>gp3 100GB"]
Inst1 --> ENI1["ENI<br/>プライベート IP<br/>Elastic IP 付与可"]
Inst2 --> ENI2["ENI<br/>プライベート IP"]
Region / AZ / VPC
- Region(リージョン):地理的に独立した AWS データセンター群(東京 ap-northeast-1、オレゴン us-west-2 等)。リージョン間ネットワークは有料
- AZ(Availability Zone):リージョン内の物理的に独立したデータセンター。同一 AZ 内は無料、異 AZ は有料だが冗長化が容易
- VPC:Virtual Private Cloud。論理的なプライベートネットワーク。VPC.md 参照
- Subnet:VPC 内の特定 AZ に紐付く IP ブロック
インスタンスメタデータサービス(IMDS)
EC2 内から AWS API 呼び出しに使用する認証情報を取得。IMDSv2(トークン方式)が推奨。
# IMDSv2 でメタデータ取得(2024 年から推奨・デフォルト化)
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
# インスタンス ID 取得
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/instance-id
# IAM ロールの一時認証情報取得
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/iam/security-credentials/my-role-name
インスタンスタイプ
初心者向けメモ: インスタンスタイプ = CPU・メモリ・ネットワークの組み合わせ。命名規則は c7g.2xlarge のような [ファミリー][世代][サイズ] 形式。ファミリーで用途が決まる。
インスタンス命名規則
c7g.2xlarge
│││ └── サイズ(nano/micro/.../24xlarge)
││└──── 追加機能(g=Graviton / i=NVMe / n=Network強化 / d=Dense Storage)
│└───── 世代(7 = 第 7 世代 = 2024 年)
└────── ファミリー(c/m/r/t/p/g/x など)
主要インスタンスファミリー
| ファミリー | CPU | メモリ | 用途 | 代表型 | 料金 |
|---|---|---|---|---|---|
| t4g / t3 / t2 | バースト可能 | 小 | 開発・小規模 Web・テスト | t3.medium | 低 |
| m7g / m6i | バランス型 | バランス | Web・アプリサーバー・一般業務 | m6i.xlarge | 中 |
| c7g / c6i | 高性能 | 中 | CI/CD・コンパイル・バッチ処理 | c6i.2xlarge | 中 |
| r7g / r6i | 中 | 大(128GB+) | DB サーバー・キャッシュ・インメモリ処理 | r7g.2xlarge | 中-高 |
| x2gd / x2iezn | 中 | 超大(3.9TB+) | SAP HANA・Oracle・メモリ DB | x2gd.12xlarge | 高 |
| p4d / p3 | 中 | 大 | GPU(深層学習・推論) | p3.8xlarge | 非常に高 |
| g4dn / g5 | 中 | 大 | GPU(推論・ビデオ処理) | g5.xlarge | 高 |
| inf2 / inf1 | 専用 | 中 | Inferentia(ML 推論専用) | inf2.2xlarge | 中 |
| trn1 | 専用 | 大 | Trainium(ML 訓練専用) | trn1.32xlarge | 高 |
| hpc7g / hpc6a | 高性能 | 大 | HPC クラスター(EFA ネットワーク) | hpc7g.16xlarge | 高 |
| mac2 / mac1 | M1/M2/Intel | 24GB+ | macOS(iOS/macOS ビルド) | mac2.metal | 高 |
| i4i / i3 | 高性能 | 中 | ストレージ最適化(DB インデックス・Hadoop) | i4i.3xlarge | 高 |
プロセッサの選択
- Intel(Xeon):従来型、タイプ末尾なし(c6i)や
i系(c6i) - AMD(EPYC):
a系(c6a / m6a / r6a)、Intel より低コスト傾向 - AWS Graviton3 / Graviton4:
g系(c7g / m7g / r7g)、Intel 比 20-40% コスト効率向上が推奨、ただし一部ソフトウェア非対応注意
ストレージオプション
初心者向けメモ: EC2 のストレージは 3 種類:EBS(推奨:永続化・スナップショット可) / Instance Store(高速・臨時) / EFS(NFS 共有)。
EBS(Elastic Block Store)
EBS.md 参照。EC2 に接続されるブロックストレージ。推奨タイプ:
| タイプ | IOPS | スループット | 用途 | 注記 |
|---|---|---|---|---|
| gp3(推奨) | 3,000-16,000 | 125-1,000 MB/s | 一般的(汎用) | 新規は gp3 選択、gp2 は旧式 |
| io2 Block Express | 64,000-256,000 | 1,000-4,000 MB/s | 超高 IOPS DB(Oracle・SQL Server) | 非常に高コスト |
| st1 | 最大 500 | 最大 500 MB/s | ビッグデータ・Hadoop(シーケンシャル) | スループット最適化 |
| sc1 | 最大 250 | 最大 250 MB/s | アーカイブ・バックアップ | コスト最適化 |
Instance Store(インスタンスストア)
インスタンスに物理的に接続される NVMe SSD / HDD。インスタンス停止で削除(一時的データのみ)。
- 利点:極めて高速、EBS より低レイテンシ
- 欠点:永続化されない、RAID 構成も不可自動
- 用途:キャッシュ(ElastiCache 推奨)・臨時バッチ処理・デフォルトは EBS 推奨
EFS(Elastic File System)
NFS ベースの共有ファイルシステム。複数 EC2 インスタンスから同時マウント可能。
- EFS.md 参照
- 用途:複数インスタンス間でファイル共有(Web コンテンツ・コード・ホームディレクトリ)
- 料金:ストレージ容量 + アクセス料(オンデマンド / プロビジョニング)
FSx(ファイルサーバー)
Windows File Server / Lustre / NetApp ONTAP の マネージドファイルシステム。
ネットワーキング
初心者向けメモ: EC2 は VPC 内の Subnet に配置 され、Security Group で通信をフィルタリング、Elastic IP で固定 IP を割り当て、ENI で複数ネットワークインターフェイスを構成 できます。
VPC / Subnet / Security Group
VPC.md 参照。EC2 は VPC 内の Subnet(サブネット)に配置。
# EC2 インスタンス起動時に VPC / Subnet / Security Group を指定
aws ec2 run-instances \
--image-id ami-0b20f552f63953f0e \
--instance-type t3.medium \
--subnet-id subnet-0123456789abcdef0 \
--security-group-ids sg-0123456789abcdef0 \
...
ENI(Elastic Network Interface)
初心者向けメモ: 1 つのインスタンスに複数の ENI(ネットワークインターフェイス)を接続可能。各 ENI に異なるプライベート IP / Elastic IP / Security Group を割り当て可。
# ENI 作成
aws ec2 create-network-interface \
--subnet-id subnet-0123456789abcdef0 \
--private-ip-addresses PrivateIpAddress=10.0.1.50
# インスタンスに ENI アタッチ
aws ec2 attach-network-interface \
--network-interface-id eni-0123456789abcdef0 \
--instance-id i-0123456789abcdef0 \
--device-index 1
Elastic IP(固定 IP)
パブリック IP を固定化。インスタンス停止・起動でも IP を保持。
# Elastic IP 割り当て
aws ec2 allocate-address --domain vpc
# 結果: AllocationId = eipalloc-0123456789abcdef0
# Elastic IP をインスタンスに関連付け
aws ec2 associate-address \
--allocation-id eipalloc-0123456789abcdef0 \
--instance-id i-0123456789abcdef0
Placement Group
複数インスタンスを物理的に配置。低遅延ネットワーク必要な HPC / DB クラスタリング向け。
| タイプ | 特性 | 用途 |
|---|---|---|
| Cluster | 同一 AZ、超低遅延(< 1μs) | HPC・Kubernetes |
| Partition | 複数 AZ、論理的分割 | Hadoop・Kafka クラスタ |
| Spread | 複数 AZ、分散配置 | SQL Server・Oracle ライセンス |
# Placement Group 作成
aws ec2 create-placement-group \
--group-name hpc-cluster \
--strategy cluster
# グループ内でインスタンス起動
aws ec2 run-instances \
--image-id ami-xxx \
--instance-type hpc7g.16xlarge \
--placement GroupName=hpc-cluster
ENA(Enhanced Networking)・EBS-optimized
- ENA:高速ネットワーク、100Gbps 対応(HPC / DB向け)
- EBS-optimized:EBS への帯域幅専有(DB 向け)
購入オプション
初心者向けメモ: EC2 料金は購入オプションで大きく変わります。常時稼働なら Savings Plans、短期なら オンデマンド、中断許容ならスポット。
| 購入タイプ | 割引 | コミット期間 | 用途 | 料金予測 |
|---|---|---|---|---|
| オンデマンド | なし(基準) | なし | 短期・不定期・テスト | 最高 |
| Savings Plans | 最大 72%(1年)/ 最大 51%(3年) | 1 or 3 年 | 常時稼働(推奨) | 低 |
| Reserved Instance(RI) | 最大 72% | 1 or 3 年 | 特定インスタンス固定(非推奨) | 低 |
| スポットインスタンス | 最大 90% | 随時(最大 6 時間) | バッチ・ML訓練・開発(中断許容) | 最低 |
| Dedicated Host | 時間料金 | 1 or 3 年 | BYOL(Windows / SQL Server) | 高 |
| Dedicated Instance | 時間料金 | なし | 占有物理ホスト(共有なし) | 中-高 |
| Capacity Reservation | オンデマンド価格 | 柔軟 | 容量確保(キャパシティ保証) | 中 |
Savings Plans による割引の最大化
# 1 年 Savings Plans(計算系が 72% 割引)
aws ce compute-savings-plans recommendations \
--return-recommendations-target-type "SAVINGS_PLANS"
ポイント:Savings Plans は インスタンスファミリー・リージョン内で柔軟。例:m6i.large の Savings Plans は m5i.xlarge でも利用可(ただし使用時間当たりの割引額は変更)。
スポットインスタンスの活用(最大 90% 割引)
# スポット価格の確認
aws ec2 describe-spot-price-history \
--instance-types c6i.xlarge m5.xlarge \
--product-descriptions "Linux/UNIX" \
--start-time "$(date -u -v-7d '+%Y-%m-%dT%H:%M:%S')" \
--query 'SpotPriceHistory[*].{Type:InstanceType,AZ:AvailabilityZone,Price:SpotPrice}' \
--output table
# スポットフリート(複数インスタンスタイプ指定)
aws ec2 request-spot-fleet \
--spot-fleet-request-config file://spot-fleet-config.json
注記:スポットインスタンスは 2 分前通知で中断される可能性。Auto Scaling + Spot Placement Score で リスク低減。
Auto Scaling と ELB 連携
初心者向けメモ: Auto Scaling + ELB = 「負荷に応じたインスタンス自動増減」。複数 AZ に分散配置、ヘルスチェック自動。
【図2】Auto Scaling Group の構造:
graph TD
ASG["Auto Scaling Group<br/>最小 2・最大 10"]
ASG --> LC["起動テンプレート<br/>AMI・インスタンスタイプ"]
ASG --> CW["CloudWatch<br/>CPU > 70% で スケールアップ"]
ASG --> AZ1["AZ-1a"]
ASG --> AZ2["AZ-1c"]
AZ1 --> Inst1["Instance 1"]
AZ1 --> Inst2["Instance 2"]
AZ2 --> Inst3["Instance 3"]
Inst1 --> ELB["Network Load Balancer<br/>ヘルスチェック・分散"]
Inst2 --> ELB
Inst3 --> ELB
ELB --> User["ユーザー"]
Auto Scaling Group(ASG)の設定
# 起動テンプレート作成
aws ec2 create-launch-template \
--launch-template-name web-servers \
--launch-template-data '{
"ImageId": "ami-0b20f552f63953f0e",
"InstanceType": "t3.medium",
"KeyName": "my-keypair",
"SecurityGroupIds": ["sg-0123456789abcdef0"],
"IamInstanceProfile": {"Name": "EC2-Instance-Profile"},
"UserData": "IyEvYmluL2Jhc2gKc3VkbyB5dW0gdXBkYXRlIC15CnN1ZG8geXVtIGluc3RhbGwgLXkgaHR0cGQK"
}'
# Auto Scaling Group 作成
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name web-asg \
--launch-template LaunchTemplateName=web-servers,Version=\$Latest \
--min-size 2 \
--max-size 10 \
--desired-capacity 4 \
--availability-zones ap-northeast-1a ap-northeast-1c \
--health-check-type ELB \
--health-check-grace-period 300 \
--target-group-arns arn:aws:elasticloadbalancing:...
スケーリングポリシー
# ターゲット追跡スケーリング(推奨)
aws autoscaling put-scaling-policy \
--auto-scaling-group-name web-asg \
--policy-name target-tracking-cpu \
--policy-type TargetTrackingScaling \
--target-tracking-configuration '{
"TargetValue": 70.0,
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ASGAverageCPUUtilization"
},
"ScaleOutCooldown": 60,
"ScaleInCooldown": 300
}'
セキュリティ
初心者向けメモ: EC2 セキュリティは 3 層:① IAM Role(AWS API 呼び出し権限)、② Security Group(ネットワークインバウンド / アウトバウンド)、③ OS レベル(firewall / SSH 設定)。
IAM Role(インスタンスプロファイル)
EC2 内から AWS API(S3 / RDS / Secrets Manager など)を呼び出すための権限。
# IAM ロール作成(AssumeRole ポリシー自動)
aws iam create-role \
--role-name EC2-S3-Access \
--assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}]
}'
# ポリシーアタッチ
aws iam attach-role-policy \
--role-name EC2-S3-Access \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
# インスタンスプロファイル作成
aws iam create-instance-profile \
--instance-profile-name EC2-S3-Instance-Profile
aws iam add-role-to-instance-profile \
--instance-profile-name EC2-S3-Instance-Profile \
--role-name EC2-S3-Access
# インスタンス起動時に指定
aws ec2 run-instances \
--iam-instance-profile Name=EC2-S3-Instance-Profile \
...
Security Group(ネットワークフィルタ)
VPC.md 参照。EC2 のインバウンド / アウトバウンド通信を制御。
# Security Group 作成
aws ec2 create-security-group \
--group-name web-sg \
--description "Web server security group" \
--vpc-id vpc-0123456789abcdef0
# HTTP (80) を世界公開
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp --port 80 --cidr 0.0.0.0/0
# HTTPS (443) を世界公開
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp --port 443 --cidr 0.0.0.0/0
# SSH を特定 CIDR のみ許可
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp --port 22 --cidr 203.0.113.0/24
IMDSv2(メタデータサービス)
初心者向けメモ: IMDS(メタデータサービス)から EC2 が IAM ロールの認証情報を取得。IMDSv2(トークン方式)が推奨。IMDSv1(ヘッダーのみ)は SSRF 攻撃に脆弱。
# IMDSv2 強制(2024 年デフォルト化)
aws ec2 modify-instance-metadata-options \
--instance-id i-0123456789abcdef0 \
--http-tokens required \
--http-endpoint enabled \
--http-put-response-hop-limit 1
# 新規起動のデフォルト設定
aws ec2 modify-instance-metadata-defaults \
--http-tokens required \
--http-endpoint enabled \
--region ap-northeast-1
Systems Manager Session Manager
初心者向けメモ: 「SSH キーなし」で EC2 に接続。IAM Role + Systems Manager Agent + Session Manager。推奨・デフォルト化傾向。
# インスタンスに SSM ロールをアタッチ
aws iam attach-role-policy \
--role-name EC2-Role \
--policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
# Session Manager で接続
aws ssm start-session \
--target i-0123456789abcdef0
# または EC2 Instance Connect Endpoint(VPC内のみ)
aws ec2-instance-connect ssh \
--instance-id i-0123456789abcdef0
Systems Manager Session Manager のセキュリティ
- ✅ IAM ポリシーで誰が接続できるかを管理
- ✅ CloudTrail で接続ログ記録
- ✅ KMS で CloudWatch Logs 暗号化
- ✅ セッションドキュメントで実行コマンド制限
- ❌ SSH キー は使用しない
運用・監視
初心者向けメモ: EC2 の運用は CloudWatch(メトリクス) + EC2 Health(ステータスチェック) + Systems Manager Patch Manager(パッチ) + EC2 Instance Inspector(脆弱性診断) で自動化。
CloudWatch でメトリクス監視
# CPU 使用率の確認
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
--start-time "$(date -u -d '1 hour ago' '+%Y-%m-%dT%H:%M:%S')" \
--end-time "$(date -u '+%Y-%m-%dT%H:%M:%S')" \
--period 300 \
--statistics Average,Maximum
# ダッシュボード作成
aws cloudwatch put-dashboard \
--dashboard-name EC2-Monitoring \
--dashboard-body file://dashboard-config.json
EC2 ステータスチェック
インスタンスの健全性を自動監視。失敗時は Auto Scaling で自動置換。
# ステータスチェック確認
aws ec2 describe-instance-status \
--instance-ids i-0123456789abcdef0 \
--query 'InstanceStatuses[*].{ID:InstanceId,Status:InstanceStatus.Status,SystemStatus:SystemStatus.Status}'
Systems Manager Patch Manager
OS パッチの自動適用。Default(Fast) / Critical / Important のみ など戦略選択。
# パッチのスキャン(組織全体)
aws ssm create-patch-baseline \
--name "Linux-Critical-Patches" \
--operating-system AMAZON_LINUX_2 \
--approval-rules '{"PatchRules":[{"PatchFilterGroup":{"PatchFilters":[{"Key":"CLASSIFICATION","Values":["Critical"]}]},"ComplianceLevel":"CRITICAL","ApproveAfterDays":7}]}' \
--description "Critical patches for AL2"
# パッチメンテナンスウィンドウ設定
aws ssm create-maintenance-window \
--name "Patch-Window" \
--schedule "cron(0 2 ? * SUN *)" \
--duration 4 \
--cutoff 1 \
--allow-unassociated-targets false
Amazon Inspector(脆弱性診断)
EC2 インスタンスとコンテナイメージの脆弱性を自動スキャン(Systems Manager Agent 必須)。
# Inspector スキャン開始
aws inspector2 create-findings-report \
--report-format JSON \
--s3-export-options bucketName=my-bucket,keyPrefix=inspector
主要ユースケース
初心者向けメモ: EC2 は 「何でも実行できる」 が強み。以下は代表的なユースケース 10+。
1. Web / API サーバー
構成:ALB + ASG(EC2 m6i / m7g)+ RDS
# Nginx 起動スクリプト(user-data)
#!/bin/bash
yum update -y
yum install -y nginx
systemctl start nginx
systemctl enable nginx
2. バッチ処理・データパイプライン
構成:EventBridge + Lambda(起動)→ スポットフリート(EC2)→ S3
- AWS Batch(コンテナ化の場合)
- スポットフリート(cost savings)
3. 深層学習モデルトレーニング
構成:p3.8xlarge(NVIDIA A100)+ SageMaker または自社フレームワーク
# 起動(deep learning AMI 使用)
aws ec2 run-instances \
--image-id ami-0xxx-dl \
--instance-type p3.8xlarge \
--placement AvailabilityZone=ap-northeast-1a \
--ebs-optimized
4. Trainium(ML 訓練専用)による大規模 LLM 訓練
trn1.32xlarge:AWS Trainium チップ(TensorFlow / PyTorch サポート)で大規模言語モデル訓練。
5. Inferentia(ML 推論専用)による低遅延推論
inf2.2xlarge:Inferentia2 チップで ML 推論を低コストで実行。
6. HPC(計算化学・気象シミュレーション)
構成:hpc7g.16xlarge + Placement Group Cluster + EFA(高速ネットワーク)
7. Lift & Shift(オンプレミス→EC2 移行)
構成:AWS DataSync + Application Migration Service(MGN)でエージェントレス移行
8. Windows Server + SQL Server(BYOL)
構成:Windows インスタンス + Dedicated Host(ライセンス持込)
9. macOS(iOS/macOS 開発・ビルド)
m3.large(M3 Max):Xcode ビルド・TestFlight 署名・AppStore デプロイ
10. CI/CD エージェント
構成:t3.medium(または c6i)+ GitHub Actions Runner / GitLab Runner / Jenkins Agent
11. ゲームサーバー
構成:r6i(メモリ最適化)+ ECS / Spot Instances(cost reduction)+ GameLift
12. レガシー(COBOL / 3GL)システム
構成:Windows / RHEL インスタンス + Mainframe emulation / Rumba+ ソフトウェア
他の類似ツールとの比較
| サービス | 制御度 | 管理負荷 | コスト | 最小起動時間 | スケーリング | 用途 |
|---|---|---|---|---|---|---|
| EC2 | 最高 | 高(OS管理) | 中 | 30-60秒 | 手動or Auto Scaling | Web・バッチ・HPC・レガシー |
| ECS Fargate | 中(コンテナ) | 低 | 中 | 10-20秒 | 自動 | コンテナワークロード(ビルド済み) |
| Lambda | 低(FaaS) | 最低 | 低(短時間)/ 高(長時間) | 1-5秒 | 自動 | サーバーレス・イベント駆動 |
| Lightsail | 中 | 低 | 低 | 1分 | 手動 | 小規模ブログ・開発環境 |
| Google Compute Engine | 最高 | 高 | 中(若干高) | 30-60秒 | 自動 | マルチクラウド戦略 |
| Azure VM | 最高 | 高 | 中 | 30-60秒 | 自動 | マルチクラウド・Windows |
選び方:
- ✅ EC2:OS 全制御・既存ソフト・特定ランタイム版・AI/ML・HPC が必要な場合
- ✅ Fargate:コンテナ化済み・管理最小化が目的の場合
- ✅ Lambda:イベント駆動・秒単位で消滅するワークロード(API エンドポイント・定期処理)
クライアントとエコシステム
AWS CLI / SDK
# AWS CLI でインスタンス操作
aws ec2 run-instances --image-id ami-xxx --instance-type t3.medium
# Python SDK(Boto3)
import boto3
ec2 = boto3.resource('ec2', region_name='ap-northeast-1')
instances = ec2.create_instances(ImageId='ami-xxx', MinCount=1, MaxCount=1)
Infrastructure as Code(IaC)
| ツール | 言語 | 用途 |
|---|---|---|
| CloudFormation | JSON/YAML | AWS 公式、宣言的 |
| Terraform | HCL | マルチクラウド対応(推奨) |
| AWS CDK | Python/TypeScript/Java | プログラマティック(Python推奨) |
# Terraform 例
resource "aws_instance" "web" {
ami = "ami-0b20f552f63953f0e"
instance_type = "t3.medium"
subnet_id = aws_subnet.public.id
root_block_device {
volume_size = 100
volume_type = "gp3"
delete_on_termination = true
encrypted = true
}
tags = {
Name = "web-server"
}
}
Packer(AMI ビルド)
Packer で黄金イメージを IaC で自動生成。
source "amazon-ebs" "linux" {
ami_name = "web-server-golden"
instance_type = "t3.medium"
region = "ap-northeast-1"
}
build {
sources = ["source.amazon-ebs.linux"]
provisioner "shell" {
inline = [
"yum update -y",
"yum install -y nginx",
"systemctl enable nginx"
]
}
}
Ansible / Chef / Puppet
Config management by code。
# Ansible 例
---
- hosts: ec2
gather_facts: yes
tasks:
- name: Update packages
yum: name=* state=latest
- name: Install Nginx
yum: name=nginx state=present
- name: Start Nginx
service: name=nginx state=started enabled=yes
ベストプラクティス
コスト最適化
✅ Savings Plans で 1 年以上のコミット割引(最大 72%) ✅ Spot Instances でバッチ処理・開発環境(最大 90% 割引) ✅ Graviton(g 系) インスタンスで Intel 比 20-40% コスト削減 ✅ Right-sizing:CloudWatch で実際の CPU / メモリを監視、過剰スペック削除 ✅ 予約容量(Capacity Reservation) で AWS オファー最適化 ✅ AWS Cost Explorer / Trusted Advisor で定期監視
❌ t2 インスタンス:旧式、CPU クレジット枯渇→パフォーマンス低下、t3/t4g へ移行 ❌ gp2 ボリューム:gp3 より高コスト、gp3 へ変更 ❌ オンデマンド常時使用:Savings Plans で 50% 以上削減可能
セキュリティ
✅ IAM Role で AWS API 権限を管理(SSH キー 不要化) ✅ IMDSv2 必須化(SSRF 攻撃対策) ✅ Security Group で最小権限ネットワーク(デフォルト DENY) ✅ Systems Manager Session Manager で SSH キーレスアクセス ✅ EBS 暗号化(AWS KMS)で保存時暗号化 ✅ Systems Manager Patch Manager で自動 OS パッチ適用 ✅ EC2 Instance Inspector で定期脆弱性スキャン ✅ CloudTrail で API ログ記録
❌ IMDSv1 放置:SSRF で認証情報漏洩リスク ❌ SSH キー管理:スケール困難、コンプライアンス課題 ❌ パブリック IP デフォルト割り当て:EC2 Instance Connect Endpoint で代替 ❌ Security Group ルール無限大:最小権限ビルド
可用性 / 災害復旧
✅ 複数 AZ デプロイ(Auto Scaling)で自動フェイルオーバー ✅ AMI 定期作成(EC2 Image Builder)で黄金イメージ管理 ✅ EBS スナップショット(Data Lifecycle Manager)で自動バックアップ ✅ ヘルスチェック(ELB / ASG)で自動置換 ✅ リージョン間 DR:複数リージョン AMI コピー + ASG
❌ 単一 AZ デプロイ:AZ 障害で全ダウン ❌ 手動 AMI 作成:更新漏れ、バージョン管理不能 ❌ EBS スナップショット無し:データ消失リスク
パフォーマンス
✅ 適切なインスタンスファミリー選択:
- 汎用(m系):Web / アプリ
- コンピュート最適化(c系):CI/CD / バッチ
- メモリ最適化(r系):DB / キャッシュ
- GPU(p系 / g系):ML / 推論
- Graviton3/4(g系):費用対効果
✅ EBS 最適化:gp3(16k IOPS / 1000 MB/s)で一般用途カバー ✅ ENI 複数接続:マイクロセグメンテーション・複数 IP ✅ Placement Group:HPC / DB クラスタで < 1μs 遅延 ✅ CloudWatch / X-Ray で アプリケーション内ボトルネック特定
❌ gp2 継続使用:IOPS / スループット固定、パフォーマンス低 ❌ Instance Store 無視:キャッシュ層として活用可能(臨時) ❌ EBS 暗号化無視:性能影響最小、暗号化推奨
トラブルシューティング
| 症状 | 原因 | 解決策 |
|---|---|---|
| SSH 接続失敗 | キーペア紛失 / Security Group 22 番ポート閉鎖 | EC2 Instance Connect Endpoint / Systems Manager Session Manager を利用 |
| インスタンス起動失敗(Insufficient Capacity) | AZ 容量不足 | 別 AZ / インスタンスタイプ変更 / スポットインスタンス利用 |
| パフォーマンス低下(CPU > 80%) | インスタンスサイズ小さすぎる | CloudWatch で確認 → Auto Scaling / right-sizing |
| ディスク容量不足 | ルートボリューム満杯 | EBS ボリューム拡張 + ファイルシステムリサイズ、または EFS に移行 |
| IMDS タイムアウト | IMDSv2 トークン取得失敗 / ネットワーク問題 | ネットワーク設定確認、Systems Manager Agent 再起動 |
| Spot インスタンス中断 | AWS 予備容量を回収 | ASG で複数インスタンスタイプ / リージョン指定 |
| Cost Explorer 料金急増 | Reserved Instance / Savings Plans 失効 | AWS Cost Anomaly Detection で監視 |
2025-2026 最新動向
AWS Graviton5 プロセッサ(M9g / C9g / R9g)
2025年12月発表、M9g プレビュー中、C9g・R9g 2026年リリース予定
Graviton5 は AWS が設計した最新プロセッサで、以下の特性があります。
| 特性 | 詳細 |
|---|---|
| コア数 | 192 コア(Graviton4 比で高密度化) |
| L3 キャッシュ | 180 MB(5倍大) |
| パフォーマンス | Graviton4 比 25% 向上、DB 30% 高速、Web App 35% 高速、ML 35% 高速 |
| ネットワーク帯域 | 15% 向上(最大構成は 2 倍) |
| EBS 帯域 | 20% 平均向上 |
| プロセス | 3nm(エネルギー効率向上) |
| セキュリティ | メモリ常時暗号化、キャッシュ隔離、ポインタ認証、Nitro Isolation Engine |
M9g 系は汎用(最大 768 GB メモリ)、C9g 系はコンピュート最適化、R9g 系はメモリ最適化で、既存 Graviton4 比でコスト対効果が 20-30% 向上。
AMD EPYC(第9世代)
512GB+ メモリオプション搭載。Oracle / SAP HANA / 大規模インメモリデータベース向け。
Trainium / Inferentia 最新版
生成 AI(LLM)訓練・推論の専用チップ。精度向上・推論遅延削減。
Mac インスタンス(M3 / M4 世代)
Apple M4 チップ搭載(2026 リリース予定)。iOS 18 / macOS 15 開発・ビルド対応。
Local Zones(大都市圏超低遅延)
東京・大阪・名古屋の大都市圏で超低遅延(1-2ms)リージョン展開。実時間処理向け。
Outposts / AWS for Industries
オンプレミス + AWS クラウドの統合、業界別ソリューション(自動車・医療・金融)加速。
AI/ML 統合深化
EC2 + SageMaker / Bedrock / Amazon Q による AI アシスタント機能。
学習リソース
公式ドキュメント
- AWS EC2 User Guide
- EC2 Instance Types
- EC2 Pricing
- EC2 Features
- AWS Well-Architected Framework - Compute Lens
- AWS Security Best Practices
認定資格
- AWS Certified Cloud Practitioner
- AWS Certified Solutions Architect – Associate(EC2 + VPC + RDS が中心)
- AWS Certified SysOps Administrator – Associate
コミュニティ / ブログ
- A Cloud Guru / Linux Academy:動画コース
- AWS ブログ:最新ニュース
- AWS WhitePapers:アーキテクチャガイド
- AWS Workshops:ハンズオン実習
実装例・活用シーン
小規模(スタートアップ)
- 構成:t3.small(Web)+ t3.small(API)+ t3.micro(DB) + CloudWatch + Route53
- 目安:月額 $100-200(オンデマンド)/ $40-80(Savings Plans)
中規模(成長企業)
構成:
Web: m6i.large x 2 (ALB + ASG) + Savings Plans(72% 割引)
API: c6i.2xlarge x 4(バッチ)+ スポット(90% 割引)
DB: r6i.4xlarge + RDS(Read Replica)
Cache: ElastiCache(Redis)
監視: CloudWatch + Custom Metrics
目安:月額 $5,000-15,000(Savings Plans 導入後)
大規模(エンタープライズ)
構成:
Web/API: 複数リージョン + [CloudFront](/services/cloudfront/) CDN + DDoS 保護
AI/ML: trn1.32xlarge(訓練)+ inf2(推論)
HPC: hpc7g.16xlarge + Placement Group + EFA
DB: Aurora(マルチAZ / 複数リージョン)+ DMS(移行)
セキュリティ: [KMS](/services/kms/) / [Secrets Manager](/services/secrets-manager/) / GuardDuty
コスト: RI Blend / Savings Plans + Reserved Capacity
目安:月額 $100,000+(総保有コスト削減)
導入ロードマップ
Phase 1: 学習・パイロット(1-2 週間)
- VPC 作成(VPC.md 参照)
- t3.micro で EC2 インスタンス 1 個起動
- SSH / Session Manager でアクセス確認
- CloudWatch でメトリクス監視
Phase 2: 開発環境構築(2-4 週間)
- AMI(Ubuntu/AL2)選定
- Terraform / CloudFormation で IaC 化
- Security Group / NACL 設計
- Ansible / Packer で自動化
Phase 3: 本番環境設計(4-8 週間)
- インスタンスファミリー選定(m / c / r)
- Auto Scaling + ELB 構成
- Savings Plans / Reserved Instances 購入
- IAM Role / KMS セキュリティ設計
Phase 4: 運用・最適化(継続)
- CloudWatch / Systems Manager で監視
- Patch Manager で自動更新
- AWS Cost Explorer で コスト最適化
- 四半期ごと right-sizing 実施
実装チェックリスト
- [ ] VPC / Subnet / Security Group を設計・作成した
- [ ] インスタンスファミリー(汎用 m / コンピュート c / メモリ r)を選定
- [ ] Graviton(g系)インスタンスで同等性能・低コストが実現できるか検討
- [ ] 常時稼働の場合は Savings Plans で割引(推奨:最大 72%)
- [ ] ルートボリュームは gp3 + 暗号化(AWS KMS)を有効化
- [ ] IMDSv2 を強制設定(SSRF 攻撃対策)
- [ ] IAM Role を設定(AWS API 呼び出し権限)
- [ ] Systems Manager Session Manager で SSH キーレスアクセス確認
- [ ] EBS スナップショット自動化(Data Lifecycle Manager)
- [ ] Auto Scaling + ELB を検証(複数 AZ デプロイ)
- [ ] CloudWatch でメトリクス監視(CPU / メモリ / ディスク / ネットワーク)
- [ ] Systems Manager Patch Manager で OS パッチ自動適用
- [ ] EC2 Instance Inspector で脆弱性スキャン(定期)
- [ ] CloudTrail で API ログ記録を有効化
- [ ] AWS Cost Anomaly Detection で 異常課金検知
まとめ
Amazon EC2 は AWS の基盤仮想サーバーサービス です。インスタンスファミリー選択(汎用 m / コンピュート c / メモリ r / Graviton g)・購入オプション(オンデマンド / Savings Plans 72% 割引 / スポット 90% 割引)・EBS ボリューム(gp3 推奨)・複数 AZ 構成(Auto Scaling + ELB)の組み合わせで、コストと性能を最適化できます。
セキュリティは IMDSv2 必須化・Systems Manager Session Manager での SSH キーレスアクセス・EBS 暗号化が基本です。運用は CloudWatch / Patch Manager / Inspector で自動化し、右シットサイジング・Savings Plans / Spot Instances を活用してコストを最小化します。
「どのコンピューティングサービスを選ぶか」の判断基準:
- OS 全制御 / 既存ソフト / 特定ランタイム → EC2
- コンテナ化・管理最小化 → ECS / EKS / Fargate
- サーバーレス・イベント駆動 → Lambda
- 小規模スタートアップ → Lightsail
参考文献
公式ドキュメント
- AWS EC2 User Guide
- Amazon EC2 Concepts and Features
- EC2 Instance Types Documentation
- EC2 Pricing Documentation
- AWS EC2 Features
- EC2 Auto Scaling User Guide
- AWS IAM Role for EC2
- Systems Manager Session Manager
- EC2 Instance Inspector Documentation
- AWS Well-Architected Framework - Compute Lens
- Elastic Load Balancing User Guide
- Amazon CloudWatch User Guide
関連 AWS サービス
- VPC.md - ネットワーク・Security Group・ENI
- EBS.md - ストレージ
- IAM.md - 認証・認可
- Auto Scaling - 自動スケーリング
- ELB - ロードバランシング
- RDS.md - マネージドデータベース
- ECS.md - コンテナ
- Lambda.md - サーバーレス
- CloudWatch.md - 監視
- Systems Manager - 運用管理
- KMS.md - 暗号化
- Secrets Manager - シークレット管理
参考資料追加(2026年)
- AWS EC2 Graviton5: Graviton5 発表記事、M9g インスタンスタイプ
- AWS Compute Blog: EC2 最新ニュース・機能発表
最終更新:2026-04-26 バージョン:v2.1(Graviton5 対応) 著者:Claude (Anthropic) — i のメモ拡充プロジェクト