Compute
EC2、Lambda、ECS、EKS
EC2(Elastic Compute Cloud)
仮想サーバー。OS、CPU、メモリ、ストレージを選択して起動。
インスタンスタイプ
| ファミリー | ユースケース | 例 |
|---|---|---|
| t3/t4g | 汎用、バースト可能 | t3.micro, t4g.small |
| m5/m6i | 汎用、バランス型 | m6i.large |
| c5/c6i | コンピューティング最適化 | c6i.xlarge |
| r5/r6i | メモリ最適化 | r6i.2xlarge |
| g4/p4 | GPU(ML/グラフィック) | g4dn.xlarge |
Lambda
サーバーレス。コードをアップロードするだけで実行。イベント駆動。
メリット
- • サーバー管理不要
- • 自動スケーリング
- • 実行時間のみ課金
制限
- • 最大15分の実行時間
- • メモリ最大10GB
- • コールドスタート遅延
1 # Lambda関数例 2 import json 3 import boto3 4 5 def lambda_handler(event, context): 6 # S3イベントトリガーの例 7 bucket = event['Records'][0]['s3']['bucket']['name'] 8 key = event['Records'][0]['s3']['object']['key'] 9 10 # 処理 11 s3 = boto3.client('s3') 12 response = s3.get_object(Bucket=bucket, Key=key) 13 14 return { 15 'statusCode': 200, 16 'body': json.dumps('Processed: ' + key) 17 }
ECS(Elastic Container Service)
AWS独自のコンテナオーケストレーション。Fargateで完全サーバーレス化可能。
EC2起動タイプ
EC2インスタンス上でコンテナを実行。インスタンスの管理が必要。
Fargate
サーバーレス。タスク定義のみでコンテナ実行。インスタンス管理不要。
ECSの構成要素
- クラスター: コンテナを実行する論理グループ
- タスク定義: コンテナの設定(イメージ、CPU、メモリ)
- サービス: タスクの実行数を維持、ロードバランサー連携
- タスク: 実行中のコンテナインスタンス
EKS(Elastic Kubernetes Service)
マネージドKubernetes。コントロールプレーンをAWSが管理。
| 観点 | ECS | EKS |
|---|---|---|
| 学習コスト | 低い(AWS独自) | 高い(K8s知識必要) |
| ポータビリティ | AWSに依存 | どこでもK8s |
| エコシステム | AWS統合が強い | K8sエコシステム活用 |
| コスト | 無料(Fargate課金のみ) | クラスター $0.10/時間 |
Auto Scaling
負荷に応じてEC2インスタンス数を自動調整。
ターゲット追跡
CPU使用率50%を維持するようスケール
ステップスケーリング
CPU 70%以上で+2台、80%以上で+4台
スケジュール
平日9時に5台、夜間は1台
選択ガイド
- EC2を選ぶとき:
フルコントロールが必要、特殊なOS設定、GPUワークロード
- Lambdaを選ぶとき:
イベント駆動、短時間処理、バースト的なワークロード
- ECS/Fargateを選ぶとき:
コンテナ化済み、AWS統合重視、シンプルな運用
- EKSを選ぶとき:
K8s経験あり、マルチクラウド、複雑なワークロード