Open4

S3のDEEP_ARCHIVEクラスのオブジェクトを復元した場合のコストをAthenaで計算する

dehio3dehio3

S3のオブジェクト一覧の取得方法

S3インベントリを使用してオブジェクトリストを生成する
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/storage-inventory.html

S3インベントリを作成するCLI
https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-inventory-configuration.html

sample
aws s3api put-bucket-inventory-configuration \
    --bucket my-bucket \
    --id sample \
    --inventory-configuration '{
        "Destination": {
            "S3BucketDestination": {
                "Bucket": "arn:aws:s3:::inventory-bucket",
                "Format": "Parquet",
                "AccountId": "123456789012"
            }
        },
        "Id": "sample",
        "IsEnabled": true,
        "Filter": {
            "Prefix": "apache/accesslog/"
        },
        "Schedule": {
            "Frequency": "Weekly"
        },
        "IncludedObjectVersions": "All",
        "OptionalFields": ["Size", "StorageClass", "IntelligentTieringAccessTier", "LastModifiedDate"]
    }' \
    --profile exsample

Athenaで検索できるようにテーブルを生成する
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/storage-inventory-athena-query.html

StorageClassの値

クラス名 正式名称 概要
STANDARD S3 Standard デフォルトのストレージクラス。高い耐久性と可用性を提供し、頻繁にアクセスされるデータ向け。
REDUCED_REDUNDANCY S3 Reduced Redundancy Storage (RRS) 冗長性を低く設定し、コストを削減したストレージクラス。現在は非推奨であり、S3 Standard の使用が推奨されます。
STANDARD_IA S3 Standard-Infrequent Access (Standard-IA) アクセス頻度が低いが、即時アクセスが必要なデータ向け。低コストで保存できるが、取り出し時に追加料金が発生します。
ONEZONE_IA S3 One Zone-Infrequent Access (One Zone-IA) アクセス頻度が低く、単一のアベイラビリティゾーンに保存されるデータ向け。コストをさらに抑えられますが、冗長性が低くなります。
INTELLIGENT_TIERING S3 Intelligent-Tiering アクセスパターンが不明または変化するデータ向け。アクセス頻度に基づいて自動的に階層化し、コストを最適化します。
GLACIER S3 Glacier Flexible Retrieval アーカイブデータ向け。低コストで、柔軟な復元オプション(数分から数時間)を提供します。
DEEP_ARCHIVE S3 Glacier Deep Archive 最も低コストのアーカイブストレージ。復元には12時間以上かかりますが、長期保存でアクセス頻度が極めて低いデータに適しています。
OUTPOSTS S3 on Outposts オンプレミス環境で S3 ストレージを提供するサービス。低レイテンシーでデータをローカルに保存できます。
GLACIER_IR S3 Glacier Instant Retrieval アーカイブデータに対してミリ秒単位の即時アクセスを提供するストレージクラス。低コストでありながら、迅速なデータ取り出しが可能です。
SNOW AWS Snow Family Storage 大量のデータを物理的に移動するための AWS Snow ファミリー向けのストレージクラス。ネットワーク帯域幅が限られている環境でのデータ移行に適しています。

各ストレージクラスの詳細については、Amazon S3 ストレージクラスの理解と管理をご参照ください。

dehio3dehio3

DEEP_ARCHIVEの復元コスト

https://aws.amazon.com/jp/s3/pricing/

リクエストコスト

オブジェクトの復元リクエストにかかる費用です。料金はリクエストの種類と回数に基づいて計算されます。

リクエストタイプ 料金(1,000 リクエストあたり)
Standard $0.1142
Bulk $0.025

データ取り出しコスト

復元したデータを取り出す際に発生する費用です。取り出し速度とデータ量に基づいて異なります。

復元速度 料金(1GB あたり)
Standard $0.022
Bulk $0.005

復元されたデータの保存コスト

復元されたオブジェクトは S3 Standard ストレージクラス に保存されます。そのため、復元後のデータを保持している期間に応じた標準ストレージコストが発生します。

ストレージクラス 料金(1GB あたり/月)
S3 Standard $0.025

その他の考慮事項

早期削除コスト

  • S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive では、オブジェクトを保存してから最小ストレージ期間(それぞれ 90 日および 180 日)以内に削除すると、早期削除料金が発生します。

最小オブジェクトサイズ

  • S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive では、最小課金対象オブジェクトサイズは 40 KB です。これより小さいオブジェクトも 40 KB として課金されます。

S3バッチオペレーションでの復元方法

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/batch-ops-initiate-restore-object.html

  • S3 バッチ操作機能は、STANDARD および BULK の取得階層のみをサポートします。
dehio3dehio3

計算クエリ

SELECT 
    'Standard Retrieval' AS retrieval_type,
    ROUND(SUM(size) / POWER(1024, 3), 2) AS total_size_gb, -- 合計サイズ (GB)
    ROUND(
        (CEIL(COUNT(*) / 1000.0) * 0.1142 -- リクエストコスト: $0.1142/1,000 リクエスト
        + (SUM(size) / POWER(1024, 3)) * 0.022), -- データ取り出しコスト: $0.022/GB
        2
    ) AS total_cost_usd, -- 標準取り出しの合計コスト
    ROUND(
        (SUM(size) / POWER(1024, 3)) * 0.025 * (7 / 30.0), -- 保持コスト: $0.025/GB/月、保持期間は7日間
        2
    ) AS restoration_storage_cost_usd -- 保持コスト
FROM 
    s3_inventry_report.sample
WHERE 
    storage_class = 'DEEP_ARCHIVE'
UNION ALL
SELECT 
    'Bulk Retrieval' AS retrieval_type,
    ROUND(SUM(size) / POWER(1024, 3), 2) AS total_size_gb, -- 合計サイズ (GB)
    ROUND(
        (CEIL(COUNT(*) / 1000.0) * 0.025 -- リクエストコスト: $0.025/1,000 リクエスト
        + (SUM(size) / POWER(1024, 3)) * 0.005), -- データ取り出しコスト: $0.005/GB
        2
    ) AS total_cost_usd, -- 大容量取り出しの合計コスト
    ROUND(
        (SUM(size) / POWER(1024, 3)) * 0.025 * (7 / 30.0), -- 保持コスト: $0.025/GB/月、保持期間は7日間
        2
    ) AS restoration_storage_cost_usd -- 保持コスト
FROM 
    s3_inventry_report.sample
WHERE 
    storage_class = 'DEEP_ARCHIVE';