S3とデータ転送のコスト最適化
S3 Intelligent-Tiering、ライフサイクルルール、S3 Select、CloudFrontを適用して、ストレージとデータ転送のコストを大幅に削減します。
「S3とデータ転送のコスト最適化」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
S3 ストレージコストの基礎
Amazon S3 のストレージコストは、ストレージクラスとアクセスパターンによって大きく異なります。S3 Standard の料金は月額 1 GB あたり約 $0.023 です。ペタバイト規模では、この差が大きな金額になります。S3 には、アクセス頻度に応じて最適化された 7 つのストレージクラスがあり、料金は $0.023/GB(Standard)から $0.00099/GB(Glacier Deep Archive)まで幅があります。S3 のコストを最適化する鍵は、データに適したストレージクラスを選び、ライフサイクルポリシーで移行を自動化することです。
# S3 storage class costs (us-east-1 approximate):
# S3 Standard: $0.023/GB/month
# S3 Intelligent-Tiering: $0.023/GB (frequent) + $0.0125 (infrequent)
# S3 Standard-IA: $0.0125/GB/month + retrieval fee
# S3 One Zone-IA: $0.01/GB/month (single AZ)
# S3 Glacier Instant: $0.004/GB/month + retrieval fee
# S3 Glacier Flexible: $0.0036/GB/month + retrieval time
# S3 Glacier Deep Archive: $0.00099/GB/month + retrieval timeS3 Intelligent-Tiering
S3 Intelligent-Tieringは、実際のアクセスパターンに基づいてオブジェクトをアクセス階層間で自動的に移動します。取り出し料金はなく、頻繁なアクセス階層には最低保存期間もありません。オブジェクト単位でアクセスを監視し、30 日間アクセスされなかったオブジェクトは低頻度アクセス階層(40% 安価)へ、90 日後にはアーカイブ即時アクセス階層(68% 安価)へ移動します。月額で少額の監視料金(1,000 オブジェクトあたり $0.0025)がかかります。アクセスパターンを予測できない場合や、同じバケット内に頻繁にアクセスするデータとほとんどアクセスしないデータが混在している場合に Intelligent-Tiering を使用してください。
# Enable Intelligent-Tiering on objects
aws s3api put-object \
--bucket my-bucket \
--key data/report.parquet \
--body report.parquet \
--storage-class INTELLIGENT_TIERING
# Or set as default for entire bucket
aws s3api put-bucket-intelligent-tiering-configuration \
--bucket my-bucket \
--id whole-bucket-tiering \
--intelligent-tiering-configuration '{
"Id": "whole-bucket-tiering",
"Status": "Enabled",
"Tierings": [
{"AccessTier": "ARCHIVE_ACCESS", "Days": 90},
{"AccessTier": "DEEP_ARCHIVE_ACCESS", "Days": 180}
]
}'自動階層化のための S3 ライフサイクルルール
S3 ライフサイクルルールは、オブジェクトの経過時間に基づいて移行と有効期限切れを自動化します。プレフィックスまたはタグでルールを定義し、特定の日数に達したときの移行先を指定します。一般的なアーカイブのライフサイクルは、Standard → Standard-IA(30 日)→ Glacier Instant Retrieval(90 日)→ Deep Archive(365 日)→ Delete(2555 日)です。これにより、時間の経過とともにストレージコストを 1 GB あたり $0.023 から $0.00099 まで削減できます。アーカイブデータでは 95% の削減です。ライフサイクル移行には、IA と Glacier で 128KB 以上という最小オブジェクトサイズの制限があります。これより小さいオブジェクトは移行しても費用対効果がありません。
# Lifecycle rule: transition logs to archive
aws s3api put-bucket-lifecycle-configuration \
--bucket app-logs-bucket \
--lifecycle-configuration '{
"Rules": [{
"ID": "log-archive",
"Filter": {"Prefix": "logs/"},
"Status": "Enabled",
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER_IR"},
{"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
],
"Expiration": {"Days": 2555}
}]
}'S3 Select と Glacier Select
S3 Selectを使用すると、オブジェクト全体をダウンロードするのではなく、SQL 式で必要なデータだけを S3 オブジェクトから取得できます。たとえば 10 GB の CSV ファイルから 100 行だけが必要な場合、S3 Select はその行だけを取得できるため、データ転送コストとアプリケーションの処理時間を大幅に削減できます。Glacier Selectも Glacier 内のオブジェクトに対して同じ機能を提供します。S3 Select は CSV、JSON、Parquet 形式をサポートします。これは、多くのクエリが各データファイルの一部しか読み取らないデータ分析パイプラインで特に有効です。
# S3 Select: query a CSV object using SQL expression
aws s3api select-object-content \
--bucket analytics-data \
--key sales/2026-06.csv \
--expression-type SQL \
--expression "SELECT * FROM S3Object WHERE region = 'us-east'" \
--input-serialization 'CSV={FileHeaderInfo=USE}' \
--output-serialization 'CSV={}' \
output.csv
# Only the matching rows are returned
# Saves data transfer cost vs downloading entire fileS3 Multipart Upload と Transfer Acceleration
大きなオブジェクトをアップロードする場合、S3 Multipart Uploadはオブジェクトをパート(1 パートあたり最小 5 MB)に分割し、それらを並列にアップロードします。これによりスループットが向上し、中断したアップロードを再開できます。失敗したパートだけを再試行できるため、アップロード全体を最初からやり直す必要はありません。不完全なパートに対する料金が発生しないよう、ライフサイクルルールで未完了のマルチパートアップロードを削除してください。S3 Transfer Accelerationは、AWS CloudFront のエッジロケーションを経由してアップロードをルーティングし、遠隔地からのアップロードを高速化します。大きなファイルを世界各地のユーザーがアップロードする場合に有効ですが、追加料金($0.04~$0.08/GB)がかかります。高速化による効果を測定できる場合にのみ使用してください。
# Multipart upload example
aws s3api create-multipart-upload \
--bucket my-bucket --key large-file.zip
# Abort incomplete multipart uploads via lifecycle
aws s3api put-bucket-lifecycle-configuration \
--bucket my-bucket \
--lifecycle-configuration '{
"Rules": [{
"ID": "cleanup-incomplete-uploads",
"Status": "Enabled",
"AbortIncompleteMultipartUpload": {"DaysAfterInitiation": 7}
}]
}'データ転送コストの理解
データ転送コストは、AWS で特に予想外になりやすい請求項目の 1 つです。主なルールは次のとおりです。インバウンドデータ転送(AWS への転送)は無料です。インターネットへのアウトバウンドデータ転送は、最初の月 10 TB まで約 $0.09/GB です。リージョン間データ転送は約 $0.02/GB です。同じリージョン内のAZ 間データ転送は、片方向ごとに $0.01/GB です。同じ AZ 内の転送は無料です。リージョンをまたぐ転送やインターネット向けの転送を最小限に抑えるアーキテクチャを設計してください。費用対効果の高いコンテンツ配信に、リージョン内のデプロイと CloudFront が重要なのはこのためです。
# Data transfer cost examples (us-east-1):
# Internet (outbound): $0.09/GB (first 10 TB)
# CloudFront -> internet: $0.0085/GB (much cheaper!)
# Cross-region: $0.02/GB
# Cross-AZ (same region): $0.01/GB each direction
# Same AZ: $0.00/GB (free)
# S3 -> CloudFront: $0.00/GB (free!)
# Cost reduction tip:
# S3 -> CloudFront -> users
# vs
# EC2 -> internet -> users
# CloudFront is 10x cheaper for data egressデータ転送コスト削減のための CloudFront
Amazon CloudFront経由でコンテンツを配信すると、2 つの方法でデータ転送コストを大幅に削減できます。1 つ目は、CloudFront のエグレス料金が EC2 や S3 のインターネットへの直接アクセスよりも低いことです(約 $0.0085/GB 対 $0.09/GB)。2 つ目は、CloudFront がエッジロケーションにコンテンツをキャッシュすることで、オリジンからデータを配信する回数を減らせることです。同じコンテンツを、オリジンからは 1 回取得するだけで、キャッシュから数百万回配信できる可能性があります。S3 から CloudFront へのデータ転送も無料です。このため、CloudFront はパフォーマンス向上だけでなく、コスト最適化のためのツールでもあります。
# Cost comparison for 100 TB/month of outbound traffic:
# Direct from EC2/S3 to internet:
# 100,000 GB x $0.09/GB = $9,000/month
# Via CloudFront (assuming 80% cache hit rate):
# 20,000 GB origin pull: free (S3->CF) or $0.02 (EC2->CF)
# 100,000 GB CF->internet: 100,000 x $0.0085 = $850
# Total: ~$1,250 vs $9,000 = 86% savings
# Create CloudFront distribution with S3 origin
aws cloudfront create-distribution \
--distribution-config file://cf-config.jsonNAT Gateway コストを回避する VPC エンドポイント
NAT Gatewayのデータ処理料金($0.045/GB)は、プライベートサブネット内の EC2 インスタンスが S3 や DynamoDB に頻繁にアクセスする場合、大きなコストになる可能性があります。代わりに、S3 と DynamoDB にはVPC Gateway Endpointsを使用してください。これらは無料で AWS ネットワークバックボーン経由にトラフィックをルーティングするため、これらのサービスへのアクセスに NAT Gateway は必要ありません。さらに、他の AWS サービスにはVPC Interface Endpoints(PrivateLink)を使用すると、そのサービスへのトラフィックに対する NAT Gateway の処理料金をなくせます。ただし、Interface Endpoints 自体には少額の時間単位料金がかかります。
# Create VPC Gateway Endpoint for S3 (free!)
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345 \
--service-name com.amazonaws.us-east-1.s3 \
--vpc-endpoint-type Gateway \
--route-table-ids rtb-private-AZ1 rtb-private-AZ2
# Traffic from EC2 in private subnet to S3:
# WITHOUT endpoint: EC2 -> NAT GW ($0.045/GB) -> S3
# WITH endpoint: EC2 -> S3 via VPC endpoint ($0.00/GB)
# For DynamoDB:
aws ec2 create-vpc-endpoint \
--service-name com.amazonaws.us-east-1.dynamodb \
--vpc-endpoint-type GatewayS3 リクエストコストの最適化
S3 では、保存データの GB 単位の料金に加えて、API リクエストごとの料金も発生します。PUT, COPY, POST, LISTリクエストは 1,000 件あたり $0.005、GET, SELECTリクエストは 1,000 件あたり $0.0004 です。数百万件のリクエストを行うアプリケーションでは、これらのコストが積み重なります。最適化するには、小さなオブジェクトを大きなオブジェクトにまとめる(リクエスト数を減らす)、CloudFront を使用する(キャッシュされたレスポンスを配信し、オリジンへの GET リクエストを減らす)、可能な限りリスト操作を避ける(LIST は高コストです)、そして何百万もの個別 API 呼び出しの代わりにS3 Batch Operations を使用する(一括操作を行う)といった方法があります。
# S3 Batch Operations: process millions of objects at once
aws s3control create-job \
--account-id 123456789012 \
--manifest '{
"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},
"Location":{"ObjectArn":"arn:aws:s3:::manifest-bucket/manifest.csv","ETag":"abc123"}
}' \
--operation '{
"S3CopyObject": {
"TargetResource": "arn:aws:s3:::destination-bucket",
"StorageClass": "GLACIER"
}
}' \
--report '{"Bucket":"arn:aws:s3:::report-bucket","Enabled":true}'データ転送のための AWS DataSync
オンプレミスと AWS の間、または AWS サービス間で大規模なデータ転送を行う場合、AWS DataSyncは転送コードを自作するより費用対効果に優れています。DataSync は専用に設計されたプロトコルを使用し、オープンソースツールの最大 10 倍のスループットを実現します。また、データ検証、スケジューリング、モニタリング機能も組み込まれています。DataSync 経由で S3、EFS、または FSx に転送したデータには、標準の AWS データ転送料金が適用されます。ただし、DataSync の効率により転送をより短時間で完了できるため、大規模な移行に必要な EC2 のコンピューティング時間(およびコスト)を削減できます。
# Create DataSync task to copy S3 bucket to another region
aws datasync create-task \
--source-location-arn arn:aws:datasync:us-east-1:123:location/loc-source \
--destination-location-arn arn:aws:datasync:us-west-2:123:location/loc-dest \
--name 'DR-replication' \
--options '{
"VerifyMode": "ONLY_FILES_TRANSFERRED",
"OverwriteMode": "ALWAYS",
"TransferMode": "CHANGED"
}'
# DataSync pricing: $0.0125/GB transferredS3 の可視性を高める Storage Lens
Amazon S3 Storage Lensは、アカウントやリージョンをまたいで、組織全体の S3 ストレージ使用状況とアクティビティメトリクスを可視化します。ライフサイクルルールが設定されていないバケット、不完全なマルチパートアップロードがあるバケット、ストレージクラスの分布など、コスト最適化の機会を明らかにします。S3 Storage Lens のデフォルトダッシュボードは無料です。高度なメトリクスダッシュボード($0.20/100 万オブジェクト)では、プレフィックスごとの詳細分析とデータの経過期間メトリクスが追加されます。S3 のコスト最適化に取り組む際は、まず Storage Lens を使用して、効果の大きいバケットを特定してください。
# Enable S3 Storage Lens dashboard
aws s3control put-storage-lens-configuration \
--account-id 123456789012 \
--config-id default \
--storage-lens-configuration '{
"Id": "default",
"IsEnabled": true,
"DataExport": {
"S3BucketDestination": {
"AccountId": "123456789012",
"Arn": "arn:aws:s3:::my-storage-lens-export",
"Format": "CSV",
"OutputSchemaVersion": "V_1"
}
}
}'クイックチェック
このレッスンで扱った AWS Solutions Architect(SAA-C03)の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、S3 Intelligent-Tiering とライフサイクルルールは、データをより安価なストレージクラスへ自動的に移動することでストレージコストを削減すること、CloudFront は S3 や EC2 から直接配信する場合と比べてデータ転送コストを大幅に削減すること、そしてVPC Gateway Endpoints は S3 と DynamoDB のトラフィックに対する NAT Gateway の料金をなくすことを学びました。S3 Storage Lens は、最適化の機会を可視化します。次は、KMS、ACM、暗号化パターンについて学びます。
よくある質問
「S3とデータ転送のコスト最適化」レッスンは無料ですか?
はい。「S3とデータ転送のコスト最適化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「S3とデータ転送のコスト最適化」で何を学びますか?
S3 Intelligent-Tiering、ライフサイクルルール、S3 Select、CloudFrontを適用して、ストレージとデータ転送のコストを大幅に削減します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「S3とデータ転送のコスト最適化」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。