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/p4GPU(ML/グラフィック)g4dn.xlarge

Lambda

サーバーレス。コードをアップロードするだけで実行。イベント駆動。

メリット
  • • サーバー管理不要
  • • 自動スケーリング
  • • 実行時間のみ課金
制限
  • • 最大15分の実行時間
  • • メモリ最大10GB
  • • コールドスタート遅延
1# Lambda関数例
2import json
3import boto3
4
5def 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が管理。

観点ECSEKS
学習コスト低い(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経験あり、マルチクラウド、複雑なワークロード