SJ blog
backend
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

EC2 AMI とインスタンスストア — EBSバックアップとエフェメラルの違い

AWSのAMIタイプ(EBSバックストアvs インスタンスストアバックストア)の違い、EBSボリュームとインスタンスストアのパフォーマンス比較、AMIのコピーとシェア、ゴールデンAMI設計を解説。

一言結論

インスタンスストアは停止・終了でデータが消えるため一時的なキャッシュや中間データ専用であり、永続データは必ずEBSかS3に保存する設計が鉄則だ。

AMI バックストアの種類

AMI(Amazon Machine Image)にはルートボリュームのストレージタイプによって2種類ある。

EBSバックAMI:
  → ルートボリュームがEBS
  → インスタンス停止後もデータが残る
  → 停止・起動が可能
  → スナップショットで簡単にAMI作成
  → 現代のほとんどの用途はこれ

インスタンスストアバックAMI:
  → ルートボリュームがインスタンスストア(NVMeローカルSSD)
  → インスタンス停止/終了でデータが消える(エフェメラル)
  → 停止はできない(再起動は可能)
  → 高速なローカルI/O(EC2インスタンス内のNVMe)
  → 特定のインスタンスタイプのみ対応

インスタンスストアの特性

インスタンスストアが優れている点:
  → 非常に低レイテンシー(ローカルNVMe SSD)
  → 高いIOPS(io2 Block Expressより速い場合がある)
  → EBSのネットワーク帯域を消費しない
  → 追加料金なし(インスタンス料金に含まれる)

インスタンスストアの制限:
  → 停止/終了するとデータ消失
  → スナップショット不可
  → EBSのような動的サイズ変更不可
  
インスタンスストアに適したデータ:
  ✅ 一時的なスクラッチ領域
  ✅ バッファ・キャッシュ(Redis等の揮発性データ)
  ✅ HDFSのデータノード(HDFS自体がレプリカを管理)
  ✅ 処理途中の中間データ

EC2 インスタンスタイプ別ストレージ

インスタンスストア搭載タイプ:
  i4i.large〜: ストレージ最適化(高IOPS NVMe)
  is4gen.medium〜: AWS Graviton2の高IOPS
  d3.xlarge〜: HDD(大容量・順次アクセス)
  c5d.large〜: コンピュート最適化 + NVMe
  m5d.large〜: 汎用 + NVMe
  r5d.large〜: メモリ最適化 + NVMe

※ 接尾辞「d」がインスタンスストア搭載を示す

AMIの作成とライフサイクル

# 実行中インスタンスからAMIを作成
aws ec2 create-image \
  --instance-id i-xxx \
  --name "my-app-v1.2.0-$(date +%Y%m%d)" \
  --description "Production AMI for my-app version 1.2.0" \
  --no-reboot  # 実行中のまま作成(データ整合性に注意)

# AMIの確認
aws ec2 describe-images \
  --owners self \
  --filters Name=name,Values="my-app-*"

ゴールデン AMI パターン

ゴールデンAMI(Golden AMI):
  → セキュリティ設定済み、必要なエージェントインストール済みの
    標準ベースイメージ
  → 全EC2インスタンスはゴールデンAMIをベースに起動

ゴールデンAMIに含めるもの:
  → SSM Agent(最新版)
  → CloudWatch Agent
  → セキュリティパッチ適用済みOS
  → 会社標準のセキュリティ設定
  → Inspector エージェント
  
EC2 Image Builder でゴールデンAMIを自動化:
  → パイプラインでOSパッチ適用を自動化
  → CIS ベンチマーク等のセキュリティテストを統合
  → AMIの配布先リージョン/アカウントを設定

AMI のコピーとシェア

# AMIを別リージョンにコピー(DR用)
aws ec2 copy-image \
  --source-region ap-northeast-1 \
  --source-image-id ami-xxx \
  --region us-east-1 \
  --name "my-app-v1.2.0-us-east-1" \
  --encrypted \
  --kms-key-id arn:aws:kms:us-east-1:123456789012:key/yyy

# 別アカウントにAMIをシェア
aws ec2 modify-image-attribute \
  --image-id ami-xxx \
  --launch-permission Add=[{UserId=999999999999}]

# Organizationsにシェア
aws ec2 modify-image-attribute \
  --image-id ami-xxx \
  --launch-permission Add=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-xxx}]

試験頻出ポイント

シナリオ回答
EC2停止後もデータを保持EBSバックAMI
最高のローカルI/OパフォーマンスAインスタンスストア(NVMe)
インスタンスストアのデータ消失タイミング停止・終了時(再起動では消えない)
標準化されたEC2イメージの管理ゴールデンAMI + EC2 Image Builder
AMIを別リージョンに展開AMIコピー(KMSキーの再暗号化が必要)

まとめ

現代の一般的なワークロードにはEBSバックAMIを使い、高性能な一時データ処理にはインスタンスストアを活用する。インスタンスストアのデータは停止・終了で消えるため、永続的なデータは必ずEBSまたはS3に保存する。