目次

S3 Glacier 完全ガイド v2.0

目次


ドキュメントメタデータ

  • 最終更新: 2026-04-26
  • バージョン: v2.0
  • 対象者: ストレージアーキテクト、データ管理者、コスト最適化エンジニア
  • 難易度: 中級

概要と課題

本質

Amazon S3 Glacier は、「即座なアクセスが不要な長期保管データ向けの超低コストアーカイブストレージ層」であり、現在は S3 ストレージクラスとして統合されている。S3 Standard(0.023/GB/月)と比較して **最大 95% のコスト削減**(Glacier Deep Archive: 0.00099/GB/月)を実現し、規制要件・バックアップ・非アクティブデータ保管に最適化されている。

このサービスを選ぶ理由

なぜ S3 Glacier でないといけないのか?

  1. 長期保管コストの圧倒的削減

    • S3 Standard: $0.023/GB/月
    • Glacier Instant Retrieval: $0.004/GB/月(83% 削減)
    • Glacier Flexible Retrieval: $0.0036/GB/月(84% 削減)
    • Glacier Deep Archive: $0.00099/GB/月(95% 削減)
  2. 規制要件への対応

    • HIPAA(医療: 7 年保持)
    • SEC 17a-4(金融: 6 年保持)
    • GDPR(個人情報: 指定期間保持)
    • PCI DSS(決済: 1 年以上保持)
    • Glacier Deep Archive はテープより低コスト
  3. S3 ライフサイクルによる自動階層化

    • アプリケーション変更なし
    • 「90 日後に Instant Retrieval → 365 日後に Deep Archive」のように自動移行
    • 運用負荷なしに段階的にコスト削減
  4. S3 Intelligent-Tiering との併用

    • アクセスパターンに応じた自動遷移
    • 30 日未アクセス → IA tier
    • 90 日未アクセス → Archive Instant(Glacier Instant と同等)
    • 最大 92% のコスト削減を自動実現

このサービスを選ばない理由

  • 頻繁なアクセス: S3 Standard 推奨
  • 数日以内の取り出し不要: Glacier Deep Archive 推奨(取り出し時間 12-48 時間)
  • ホットデータ: EBS/EFS が適切
  • ミリ秒応答が必須: S3 Standard が必須

アーキテクチャ

Glacier の位置付け(S3 ストレージクラスの階層)

┌─ S3 Standard(即時アクセス)
│  └─ データ可用性: 99.99%
│  └─ 取り出し: ミリ秒
│  └─ コスト: 最高
│
├─ S3 Standard-IA(低頻度アクセス)
│  └─ 最小保存: 30 日
│  └─ 取り出し: ミリ秒(ただし取り出し料金あり)
│
├─ S3 Intelligent-Tiering(自動最適化)
│  └─ アクセスパターン学習
│  └─ 自動遷移: Frequent → Infrequent → Archive Instant → Deep Archive
│
├─ S3 Glacier Instant Retrieval(アーカイブ: ミリ秒)
│  └─ 最小保存: 90 日
│  └─ 取り出し: ミリ秒
│  └─ 用途: 年数回アクセスだが即時取り出し必須
│
├─ S3 Glacier Flexible Retrieval(アーカイブ: 時間単位)
│  └─ 最小保存: 90 日
│  └─ 取り出し: Expedited(1-5分) / Standard(3-5時間) / Bulk(5-12時間)
│  └─ 用途: 年 1-2 回のアクセス、数時間以内で許容
│
└─ S3 Glacier Deep Archive(最深アーカイブ)
   └─ 最小保存: 180 日
   └─ 取り出し: Standard(12時間) / Bulk(48時間)
   └─ 用途: 長期保管、即座な取り出し不要

mermaid ダイアグラム: Glacier ライフサイクルフロー

graph TB
    subgraph DataLifeCycle["データライフサイクル"]
        Start["新規データ作成"]
        Standard["S3 Standard<br/>ホットデータ"]
        IA["S3 Standard-IA<br/>低頻度"]
        Instant["Glacier Instant<br/>年数回"]
        Flexible["Glacier Flexible<br/>年1回"]
        DeepArchive["Deep Archive<br/>コンプライアンス"]
        Delete["削除"]
    end
    
    subgraph Transition["移行ポリシー(日数)"]
        Days0["0日"]
        Days30["30日"]
        Days90["90日"]
        Days180["180日"]
        Days2555["2555日<br/>7年"]
    end
    
    Start -->|即座| Standard
    Standard -->|Days: 30| IA
    IA -->|Days: 90| Instant
    Instant -->|Days: 180| Flexible
    Flexible -->|Days: 2555| DeepArchive
    DeepArchive -->|Days: 2920| Delete
    
    Days0 -.-> Start
    Days30 -.-> IA
    Days90 -.-> Instant
    Days180 -.-> Flexible
    Days2555 -.-> DeepArchive

Glacier クラスの詳細比較

全 4 クラスの詳細

項目 Instant Retrieval Flexible Retrieval Deep Archive Standard(非 Glacier)
取り出し時間 ミリ秒 Expedited: 1-5分
Standard: 3-5時間
Bulk: 5-12時間
Standard: 12時間
Bulk: 48時間
ミリ秒
最小保存期間 90 日 90 日 180 日 なし
ストレージコスト `0.004/GB/月 `0.0036/GB/月 `0.00099/GB/月 `0.023/GB/月
取り出し料金 無料 Expedited: 20/TB<br/>Standard: 10/TB
Bulk: `2.50/TB
Standard: `10/TB
Bulk: $2.50/TB
無料
用途 年 2-3 回、ミリ秒取り出し 年 1 回、数時間で許容 年 1 回未満、即座不要 日常使用
メタデータオーバーヘッド 40 KB 40 KB 40 KB 0

ユースケース別選択

ユースケース 推奨クラス 理由
医療画像(7 年保持) Deep Archive 最低コスト、アクセス少ない
金融取引ログ(6 年) Deep Archive 規制要件、アクセス稀
バックアップ(月 1 回確認) Flexible Retrieval Standard 取り出しで数時間許容
アクティブなコンテンツ AR Instant Retrieval ミリ秒応答必須
動画素材(編集時のみ取り出し) Flexible Retrieval Expedited で数分で取り出し可
ログファイル(検索用) Intelligent-Tiering 自動最適化で従量課金

取り出しオプション

Flexible Retrieval の 3 段階

1. Expedited(緊急)

aws s3api restore-object \
  --bucket archived-data \
  --key "critical-file.zip" \
  --restore-request '{"Days": 1, "GlacierJobParameters": {"Tier": "Expedited"}}'
  • 時間: 1-5 分
  • コスト: 最高($20/TB)
  • 用途: 本当に急ぎの場合のみ
  • 制限: 超高頻度利用は制限されることがある(AWS 側スロットリング)

2. Standard(標準)

aws s3api restore-object \
  --bucket archived-data \
  --key "monthly-data.tar.gz" \
  --restore-request '{"Days": 1, "GlacierJobParameters": {"Tier": "Standard"}}'
  • 時間: 3-5 時間
  • コスト: 中($10/TB)
  • 用途: 通常の復旧
  • 推奨: ほとんどの場合ここで十分

3. Bulk(大量・低コスト)

# 100 GB 以上の大容量復旧向け
aws s3api restore-object \
  --bucket archived-data \
  --key "annual-archive-2024.tar" \
  --restore-request '{"Days": 1, "GlacierJobParameters": {"Tier": "Bulk"}}'
  • 時間: 5-12 時間
  • コスト: 最安($2.50/TB)
  • 用途: 大容量データの低コスト復旧
  • 推奨: 月次や年次のバッチ復旧

Deep Archive の 2 段階

Deep Archive は Expedited をサポートしない。Standard と Bulk のみ。

# Deep Archive からの復旧(Standard)
aws s3api restore-object \
  --bucket archived-data \
  --key "compliance-archive.zip" \
  --restore-request '{"Days": 1, "GlacierJobParameters": {"Tier": "Standard"}}'
# → 12 時間で復旧開始

# Deep Archive からの復旧(Bulk)
aws s3api restore-object \
  --bucket archived-data \
  --key "compliance-archive.zip" \
  --restore-request '{"Days": 1, "GlacierJobParameters": {"Tier": "Bulk"}}'
# → 48 時間で復旧開始($2.50/TB)

課金の仕組み

1. ストレージ課金

月間コスト = ストレージサイズ GB × 月間単価

例:1 TB (1024 GB) を Deep Archive で 1 年保管
= 1024 × $0.00099 × 12
= $12.19/年

2. 最小保存期間の課金

重要: 最小保存期間内に削除すると、残り期間分が課金される。

# 例 1: Flexible Retrieval(最小 90 日)で 60 日後に削除
削除時課金 = (90 - 60) × (月額単価 / 30日)
          = 30日分 × ($0.0036 / 30)
          = $0.0036

# 例 2: Deep Archive(最小 180 日)で 30 日後に削除
削除時課金 = (180 - 30) × ($0.00099 / 30日)
          = 150日分 × ($0.00099 / 30)
          = $0.00495

対策: 最小保持期間を超えてから削除することを設計時に考慮

3. ストレージオーバーヘッド(40 KB)

各オブジェクトに追加で 40 KB が課金される。

  • 内訳:
  • 32 KB: メタデータ(Glacier 料金率)
  • 8 KB: ユーザー定義メタデータ(S3 Standard 料金率)

小さいオブジェクトは圧縮してまとめるべき:

# 非効率: 1000 個の 100 KB ファイル
総容量 = 1000 × 100 KB = 100 MB
オーバーヘッド = 1000 × 40 KB = 40 MB
合計課金 = 140 MB

# 効率的: TAR.GZ で 1 つに
総容量 = 100 MB(圧縮後)
オーバーヘッド = 1 × 40 KB
合計課金 ≈ 100.04 MB(大幅削減)

4. 取り出し課金

復旧費用 = 復旧サイズ GB × 取り出し単価

例: 500 GB を Bulk で復旧
= 500 × $2.50/TB
= 500 × $2.50/1024
= $1.22

vs Standard 復旧
= 500 × $10/TB
= $4.88

5. 総コスト試算(医療画像 7 年保管)

シナリオ: 10 TB の医療画像を Deep Archive で 7 年保管

年間ストレージコスト
= 10 TB × 1024 GB/TB × $0.00099/GB/月 × 12 月
= 10240 × $0.00099 × 12
= $121.85/年

7 年間の総ストレージコスト
= $121.85 × 7
= $852.95

取り出し(年 1 回、Bulk)
= 10 TB × $2.50/TB × 7 年
= $175/年 × 7
= $1,225

総 7 年コスト
= $852.95 + $1,225
= $2,077.95

vs テープバックアップ
= 毎年 1 台(10 TB テープ:$5,000)× 7 年
= $35,000

削減: $32,922(94% 削減)

ライフサイクル統合

S3 ライフサイクルポリシー(重要)

{
  "Rules": [
    {
      "Id": "ArchiveOldObjects",
      "Status": "Enabled",
      "Prefix": "data/",
      "Transitions": [
        {
          "Days": 30,
          "StorageClass": "STANDARD_IA"
        },
        {
          "Days": 90,
          "StorageClass": "GLACIER_IR"  // Instant Retrieval
        },
        {
          "Days": 180,
          "StorageClass": "GLACIER"     // Flexible Retrieval
        },
        {
          "Days": 365,
          "StorageClass": "DEEP_ARCHIVE"
        }
      ],
      "Expiration": {
        "Days": 2555  // 7年後に削除
      }
    }
  ]
}

適用方法(AWS CLI)

# 1. ライフサイクルポリシーを JSON ファイルに保存
cat > lifecycle.json << 'EOF'
{
  "Rules": [
    {
      "Id": "ArchivePolicy",
      "Status": "Enabled",
      "Transitions": [
        {"Days": 30, "StorageClass": "STANDARD_IA"},
        {"Days": 90, "StorageClass": "GLACIER_IR"},
        {"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
      ],
      "Expiration": {"Days": 2555}
    }
  ]
}
EOF

# 2. バケットに適用
aws s3api put-bucket-lifecycle-configuration \
  --bucket my-archive-bucket \
  --lifecycle-configuration file://lifecycle.json

# 3. 確認
aws s3api get-bucket-lifecycle-configuration \
  --bucket my-archive-bucket

Terraform による IaC

resource "aws_s3_bucket_lifecycle_configuration" "archive" {
  bucket = aws_s3_bucket.data_archive.id

  rule {
    id     = "ArchiveOldObjects"
    status = "Enabled"

    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    transition {
      days          = 90
      storage_class = "GLACIER_IR"
    }

    transition {
      days          = 365
      storage_class = "DEEP_ARCHIVE"
    }

    expiration {
      days = 2555  # 7年
    }
  }
}

S3 Intelligent-Tiering

概要

アクセスパターンを学習して、自動的にストレージクラスを遷移。従量課金で月額固定なし

アーキテクチャ

アップロード直後(Frequent Tier)
    ↓ 30 日未アクセス
Infrequent Access Tier(IA) - $0.0125/GB/月
    ↓ 90 日未アクセス
Archive Instant Access Tier - $0.004/GB/月(Instant Retrieval と同等)
    ↓ 180 日未アクセス
Deep Archive Access Tier - $0.00099/GB/月(Deep Archive と同等)

課金

基本料金
= ストレージサイズ GB × 該当 tier の単価

例: 100 GB
- Frequent: 50 GB × $0.023/GB/月 = $1.15
- IA: 30 GB × $0.0125/GB/月 = $0.375
- Archive Instant: 20 GB × $0.004/GB/月 = $0.08
月額合計 = $1.605

+ モニタリング料金
= 100 GB × $0.0025 per 1,000 objects

Glacier vs Intelligent-Tiering

項目 Glacier Intelligent-Tiering
設定方法 ライフサイクルで明示的に指定 自動学習
最小保存 90/180 日 なし
取り出し 手動で明示的に Restore 自動(読み出し時)
料金体系 ストレージ単価固定 従量課金 + 監視料金
用途 保管期間が決まっているアーカイブ アクセスパターンが不定
経済効果 予測可能 最大 92% 削減(自動)

どちらを選ぶ?

Glacier を選ぶべき場合:

  • 保管期間が決まっている(7 年など)
  • アクセスパターンが予測可能
  • 最小保存期間を活用したい

Intelligent-Tiering を選ぶべき場合:

  • アクセスパターンが不確定
  • アクセス頻度の高い/低いデータが混在
  • 自動最適化で手間を減らしたい
  • 最大コスト削減を優先

Object Lock との組み合わせ

WORM(Write-Once-Read-Many)実装

Glacier + Object Lock で、削除・上書き防止のコンプライアンスアーカイブを実現。

# Bucket 作成時に Object Lock 有効化
aws s3api create-bucket \
  --bucket compliance-archive \
  --object-lock-enabled-for-bucket \
  --region ap-northeast-1

# ライフサイクルで Glacier に移行
aws s3api put-bucket-lifecycle-configuration \
  --bucket compliance-archive \
  --lifecycle-configuration '{
    "Rules": [{
      "Id": "GlacierAfter90Days",
      "Status": "Enabled",
      "Transitions": [{
        "Days": 90,
        "StorageClass": "DEEP_ARCHIVE"
      }],
      "NoncurrentVersionTransitions": [{
        "NoncurrentDays": 30,
        "StorageClass": "DEEP_ARCHIVE"
      }]
    }]
  }'

# オブジェクトに retention 設定
aws s3api put-object \
  --bucket compliance-archive \
  --key "important-data.zip" \
  --body important-data.zip \
  --object-lock-mode COMPLIANCE \
  --object-lock-retain-until-date 2026-12-31T23:59:59Z

規制要件への対応

対応可能な規制:

  • SEC 17a-4: 金融記録 6 年保持(削除防止)
  • FINRA: 金融規制(改ざん防止)
  • HIPAA: 医療データ保護(アクセス監査)
  • GDPR: 個人データ保護(保持期間管理)

主要ユースケース

1. 医療画像の 7 年コンプライアンス保管

要件: HIPAA 準拠で 7 年保持

Solution:

  • S3 Glacier Deep Archive で保管
  • Lifecycle で 90 日後に自動移行
  • Object Lock で削除防止
  • CloudTrail で監査ログ有効化

費用削減: テープ管理コスト vs S3 → 90% 削減

2. 大規模動画素材のアーカイブ

要件: 年 1-2 回の編集時のみ取り出し

Solution:

  • アップロード直後は S3 Standard
  • 180 日後に Glacier Flexible Retrieval へ移行
  • 編集時は Bulk 取り出し(5-12 時間)で対応

コスト: 月額 5,000 → 500 以下

3. 金融取引ログの 6 年保持

要件: SEC 17a-4 対応、監査可能

Solution:

  • Glacier Deep Archive + Object Lock
  • WORM で削除防止を技術的に保証
  • CloudTrail + S3 Access Logging で全アクセス記録

メリット: 規制監査時に 1 クリックで証拠提出

4. マシンラーニング学習用データセット

要件: 数百 GB のデータを長期保管、月 1 回学習実行

Solution:

  • Intelligent-Tiering で自動最適化
  • Lambda で月 1 回の復旧・学習を自動化
  • EventBridge でスケジュール実行

費用削減: 自動階層化で手間なく 70% 削減

5. DC 統合後の古いバックアップ保管

要件: 昔のバックアップを保管するがアクセス予測不可

Solution:

  • Intelligent-Tiering で自動分類
  • アクセス少ないデータは自動的に Deep Archive へ

結果: 予測不可な場合でも自動的に最適化

6. 規制監査対応の証拠保管

要件: ISO 27001・SOC 2 監査対応

Solution:

  • Glacier + AWS Backup Audit Manager
  • 日次レポートで「全バックアップが Glacier に保管」を証明
  • CloudTrail で全削除・復旧を記録

7. 段階的なオンプレミスからクラウド移行

要件: 古いストレージシステムをクラウドに段階移行

Solution:

  • Year 1: S3 Standard(移行データ)
  • Year 2: S3 Standard-IA(低頻度)
  • Year 3+: Glacier Deep Archive(アーカイブ)

メリット: 段階的移行で初期投資を抑制


設定・操作の具体例

AWS CLI による復旧フロー

# 1. Deep Archive にある重要ファイルを復旧
aws s3api restore-object \
  --bucket compliance-data \
  --key "2023-audit-report.pdf" \
  --restore-request '{"Days": 1, "GlacierJobParameters": {"Tier": "Standard"}}'
  # → 12 時間で復旧

# 2. 復旧ステータス確認
aws s3api head-object \
  --bucket compliance-data \
  --key "2023-audit-report.pdf"
  # Restore セクションで進捗確認

# 3. 復旧完了後にダウンロード
aws s3 cp s3://compliance-data/2023-audit-report.pdf ./

Python による自動復旧スクリプト

import boto3
import time
from datetime import datetime

s3 = boto3.client('s3')

def restore_and_wait(bucket, key, restore_days=1):
    """Glacier から復旧待機"""
    
    # 1. 復旧リクエスト
    restore_request = {
        'Days': restore_days,
        'GlacierJobParameters': {
            'Tier': 'Bulk'  # 低コスト
        }
    }
    
    s3.restore_object(
        Bucket=bucket,
        Key=key,
        RestoreRequest=restore_request
    )
    
    print(f"[{datetime.now()}] 復旧リクエスト送信: {key}")
    
    # 2. 復旧完了まで待機(ポーリング)
    max_wait = 48 * 3600  # 48時間まで待機
    start_time = time.time()
    poll_interval = 60  # 1分ごとにチェック
    
    while time.time() - start_time < max_wait:
        response = s3.head_object(Bucket=bucket, Key=key)
        
        if 'Restore' in response:
            restore_info = response['Restore']
            if 'true' in restore_info and 'ongoing-request="false"' in restore_info:
                # 復旧完了
                print(f"[{datetime.now()}] 復旧完了: {key}")
                return True
        
        time.sleep(poll_interval)
    
    print(f"[{datetime.now()}] タイムアウト: {key}")
    return False

# 実行
restore_and_wait('archive-bucket', 'monthly-backup-2023.tar')

Terraform による完全な構成

# S3 バケット
resource "aws_s3_bucket" "archive" {
  bucket = "my-archive-bucket"
}

# ライフサイクルポリシー
resource "aws_s3_bucket_lifecycle_configuration" "archive" {
  bucket = aws_s3_bucket.archive.id

  rule {
    id     = "ArchiveOldData"
    status = "Enabled"

    # 30日後に IA へ
    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    # 90日後に Glacier Instant へ
    transition {
      days          = 90
      storage_class = "GLACIER_IR"
    }

    # 365日後に Deep Archive へ
    transition {
      days          = 365
      storage_class = "DEEP_ARCHIVE"
    }

    # 7年後に削除
    expiration {
      days = 2555
    }
  }
}

# バージョニング(復旧用)
resource "aws_s3_bucket_versioning" "archive" {
  bucket = aws_s3_bucket.archive.id

  versioning_configuration {
    status = "Enabled"
  }
}

# 暗号化
resource "aws_s3_bucket_server_side_encryption_configuration" "archive" {
  bucket = aws_s3_bucket.archive.id

  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm     = "aws:kms"
      kms_master_key_id = aws_kms_key.s3.arn
    }
  }
}

# ブロックパブリックアクセス
resource "aws_s3_bucket_public_access_block" "archive" {
  bucket = aws_s3_bucket.archive.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

# CloudTrail ログ(監査)
resource "aws_s3_bucket_logging" "archive" {
  bucket = aws_s3_bucket.archive.id

  target_bucket = aws_s3_bucket.logs.id
  target_prefix = "glacier-access-logs/"
}

output "bucket_name" {
  value = aws_s3_bucket.archive.id
}

類似サービス比較

項目 S3 Glacier Azure Archive GCP Archive Backblaze B2
ストレージ単価 `0.00099/GB `0.002/GB `0.004/GB `0.003/GB
取り出しレイテンシ 12-48時間 15時間 24時間 可変(数時間)
最小保存期間 180日 30日 365日 なし
取り出し料金 Tier別 Tier別 低($0.012/GB) なし
規制対応 SEC, HIPAA HIPAA, PCI SOC 2 限定
統合 AWS 完全統合 Azure 統合 GCP 統合 S3 互換

選択基準

  • AWS 環境: S3 Glacier(ネイティブ統合)
  • Azure 環境: Azure Archive(コスト最適)
  • マルチクラウド: Backblaze B2(S3 互換 API)

ベストプラクティス

✅ 推奨事項

  1. ライフサイクル自動化で段階移行

    • 手動操作なし
    • 90日→Instant、180日→Flexible、365日→Deep Archive
  2. 小さいオブジェクトは圧縮してまとめる

    • TAR.GZ で複数ファイル統合
    • 40 KB オーバーヘッドの影響を低減
  3. 取り出しは事前計画

    • Bulk(5-12時間)で十分か検討
    • 緊急時のみ Expedited(高コスト)
  4. Intelligent-Tiering で不確実性対応

    • アクセスパターン不定な場合は自動化
    • 最大 92% 削減
  5. Object Lock で規制対応

    • WORM 要件の技術的保証
    • 削除防止で監査対応
  6. CloudTrail + Access Logging で監査

    • 全アクセス・復旧を記録
    • コンプライアンス証拠
  7. バージョニング有効化

    • 誤削除対応
    • 特定時点への復旧
  8. 段階的移行で初期投資抑制

    • Year 1: Standard
    • Year 2-3: IA
    • Year 3+: Glacier

❌ アンチパターン

  1. 小さいオブジェクトを大量に保管 → 40 KB オーバーヘッドで非効率 → 対策: まず圧縮・統合

  2. 最小保存期間無視で早期削除 → 残り期間分が課金されて割高 → 対策: 最小期間カレンダーを管理

  3. Glacier にアップロード後、すぐ削除 → 最小保存期間課金が発生 → 対策: ライフサイクルで段階移行

  4. テスト用に Expedited 多用 → 取り出し料金が高額 → 対策: Bulk で計画的に復旧

  5. バージョニングなしでアーカイブ → 誤上書き時の復旧不可 → 対策: バージョニング有効化

  6. 監査ログなし → コンプライアンス要件未達成 → 対策: CloudTrail + Access Logging


トラブルシューティング

症状 原因 対策
復旧リクエスト失敗 ストレージクラスが Glacier でない head-object で確認、Glacier へ移行待機
復旧が 48 時間以上待機 Bulk 取り出しで Deep Archive 仕様。待機必須(Expedited は Deep Archive 未対応)
最小保存期間課金発生 最小期間内に削除 計算式確認、残り期間分の課金が正当
オーバーヘッド課金が高い 小さいオブジェクト多数 事前に圧縮・統合
ライフサイクル移行が遅い バッチ処理の遅延 24-48 時間待機(AWS 側のスケジュール)
取り出し料金が予想より高い Tier 指定ミス Bulk($2.50/TB)確認
Intelligent-Tiering が想定より高い 監視料金を見落とし 月額 + 監視料金 = 合計コスト計算

2025-2026 最新動向

1. Intelligent-Tiering の Deep Archive 対応拡大

Deep Archive Tier へのアクセスが自動化。180 日以上のデータは自動的に最深層へ。

2. S3 ライフサイクルポリシーの UI 改善

AWS コンソール上でより直感的にルールを設定できるように改善(2025 予定)。

3. Restore 待機時間の短縮

新しいハードウェア・インフラで、Deep Archive の Standard 復旧が 12 時間 → 6 時間に短縮される見込み(2026 予定)。

4. コスト再評価(2025-2026)

ストレージコスト競争力強化のための価格見直し検討中。現在が最安値保証。


学習リソース

公式ドキュメント

AWS ブログ・リソース

相互比較

  • Azure Archive Storage: コスト比較対象
  • Google Cloud Archive: マルチクラウド環境
  • Wasabi: S3 互換の低コストアーカイブ

実装例

小規模(年 100 GB 増)

# シンプルなライフサイクル: 1 年後に Deep Archive
aws s3api put-bucket-lifecycle-configuration \
  --bucket small-archive \
  --lifecycle-configuration '{
    "Rules": [{
      "Id": "SimpleArchive",
      "Status": "Enabled",
      "Transitions": [
        {"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
      ]
    }]
  }'

# monthly cost: 100 GB × $0.00099 ≈ $0.10

中規模(年 10 TB 増、規制対応)

# Terraform: Glacier + Object Lock + Audit
resource "aws_s3_bucket" "medical_data" {
  bucket              = "hospital-medical-archives"
  object_lock_enabled = true
}

resource "aws_s3_bucket_lifecycle_configuration" "medical" {
  bucket = aws_s3_bucket.medical_data.id

  rule {
    id     = "HIPAA7YearRetention"
    status = "Enabled"

    transition {
      days          = 90
      storage_class = "GLACIER_IR"
    }

    transition {
      days          = 365
      storage_class = "DEEP_ARCHIVE"
    }

    expiration {
      days = 2555  # 7年
    }
  }
}

# monthly cost: 10 TB × $0.00099 ≈ $100/月

大規模エンタープライズ

#!/bin/bash
# 1000+ TB の段階的アーカイブ + 監査

# ストレージクラス別ライフサイクル
for dept in medical financial legal; do
  aws s3api put-bucket-lifecycle-configuration \
    --bucket "$dept-archives" \
    --lifecycle-configuration '{
      "Rules": [{
        "Id": "EnterpriseRetention",
        "Status": "Enabled",
        "Transitions": [
          {"Days": 30, "StorageClass": "STANDARD_IA"},
          {"Days": 90, "StorageClass": "GLACIER_IR"},
          {"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
        ],
        "Expiration": {"Days": 2555}
      }]
    }'
done

# CloudTrail で全アクセス記録
aws cloudtrail put-event-selectors \
  --trail-name archive-trail \
  --event-selectors '[{
    "ReadWriteType": "All",
    "IncludeManagementEvents": true,
    "DataResources": [{
      "Type": "AWS::S3::Object",
      "Values": ["arn:aws:s3:::*/*"]
    }]
  }]'

# monthly cost: 1000 TB × $0.00099 ≈ $1,000/月(95% 削減)

導入ロードマップ

Phase 1: 計画(2-4 週間)

  • [ ] 現行ストレージ構成把握
  • [ ] アクセスパターン分析
  • [ ] 保持期間・規制要件確認
  • [ ] ライフサイクル戦略設計
  • [ ] コスト試算

Phase 2: パイロット(1-2 か月)

  • [ ] テスト用バケットで Lifecycle 検証
  • [ ] 復旧フロー確認
  • [ ] パフォーマンス測定
  • [ ] コスト実績確認

Phase 3: 本番展開(1-3 か月)

  • [ ] 本番バケットで Lifecycle 有効化
  • [ ] 既存データの段階移行
  • [ ] CloudTrail・監査ログ設定
  • [ ] チーム トレーニング

Phase 4: 最適化

  • [ ] Intelligent-Tiering 検討
  • [ ] Object Lock による規制対応
  • [ ] 定期的なコスト見直し
  • [ ] 復旧テスト実施

まとめ

Amazon S3 Glacier は長期保管データのコストを最大 95% 削減する超低コストアーカイブ層

主な価値

  1. コスト削減: 最大 95% の削減で大規模データ保管を経済化
  2. 自動化: ライフサイクルで手動操作なし
  3. 規制対応: Object Lock で WORM 要件を技術的に保証
  4. 柔軟性: Intelligent-Tiering で不確実性対応
  5. 可視化: CloudTrail で監査ログ完全記録

次のステップ

  1. ライフサイクル設計: 保持期間・段階移行を決定
  2. パイロット実施: テストで復旧フロー検証
  3. 本番化: ポリシー適用、既存データ移行
  4. 監査設定: CloudTrail + Access Logging 有効化

注意事項

  • 最小保存期間内の削除は課金対象
  • 小さいオブジェクトは圧縮推奨
  • Expedited は高額(緊急時のみ)
  • Deep Archive は 12-48 時間待機必須

最終更新: 2026-04-26 バージョン: v2.0