AWS S3の使い方徹底解説【2026年最新】

AWS S3の使い方徹底解説【2026年最新】
AWS S3を活用すれば、コスト効率の高いストレージソリューションを即座に導入できます。まずはバケット作成から始め、適切なアクセス制御と暗号化を設定することで、セキュアなデータ管理を実現しましょう。
本記事では、AWS S3の基本的な使い方から応用テクニックまで、実務で即活用できる知識を網羅的に解説します。ストレージクラスの選択肢、ライフサイクルポリシー、クロスリージョンレプリケーションなど、運用効率を高める機能も詳しく紹介します。AWS公式ドキュメントに準拠した手順で、初心者から上級者まで役立つ内容となっています。
目次
- はじめに:AWS S3の概要と特徴
- AWS S3バケットの作成手順とベストプラクティス
- オブジェクトのアップロード・管理・ダウンロード方法
- ストレージクラスの選択とコスト最適化戦略
- セキュリティ設定:IAM・暗号化・アクセス制御
- S3の応用機能:静的ウェブサイト・イベント通知・クロスリージョンレプリケーション
- よくあるトラブルとその解決方法
- まとめ:AWS S3を最大限に活用するためのロードマップ
- AWS S3に関するよくある質問(FAQ)
はじめに:AWS S3の概要と特徴
AWS S3(Simple Storage Service)は、オブジェクトストレージサービスとして、2006年のリリース以来、世界中の企業に利用されています。2026年現在も、その高い耐久性(99.999999999%)、柔軟なストレージクラス、そして低コストな運用が評価されています。
S3の最大の特徴は、データを「オブジェクト」として保存する点です。各オブジェクトは一意のキー(ファイル名)とメタデータ、そして任意のデータ(最大5TB)で構成されます。このアーキテクチャにより、大容量データの保存から小さなファイルの管理まで、幅広いユースケースに対応しています。
また、S3は単なるストレージサービスにとどまらず、データ分析、バックアップ、静的ウェブサイトホスティング、さらには機械学習モデルのトレーニングデータとしても活用されています。AWSの他サービス(Lambda、Glue、Athenaなど)との連携も容易で、システム全体の設計自由度が高いのが特徴です。
以下に、S3の主な特徴をまとめます。
| 特徴 | 詳細 |
|---|---|
| 耐久性 | 99.999999999%(11 nines)の耐久性を実現。データ損失のリスクが極めて低い |
| 可用性 | 99.95%の可用性(SLA)。リージョン内で自動的に冗長化される |
| ストレージクラス | Standard、Intelligent-Tiering、Standard-IA、One Zone-IA、Glacier、Glacier Deep Archiveの6種類。用途に応じて最適なクラスを選択可能 |
| セキュリティ | 暗号化(SSE-S3、SSE-KMS、SSE-C)、アクセス制御(IAM、バケットポリシー、ACL)、VPCエンドポイントによるプライベート接続が可能 |
| 拡張性 | 無制限のストレージ容量。1秒あたり数千件のリクエストに対応可能なスケーラビリティ |
| 統合性 | AWS Lambda、Glue、Athena、CloudFront、CloudWatchなど、多数のAWSサービスと連携可能 |
次章からは、実際の操作手順を交えながら、S3の使い方を具体的に解説していきます。
AWS S3バケットの作成手順とベストプラクティス
1. AWS S3バケット…
AWS S3バケットを作成するには、以下の手順に従います。まず、AWS Management Consoleにログインし、サービス一覧から「S3」を選択します。
- バケット作成画面への移動
- コンソール右上のリージョン選択で、使用したいリージョンを選択します(例:東京リージョンの場合は「ap-northeast-1」)。リージョンはデータの保存場所を決定するため、用途に応じて適切なリージョンを選択しましょう。
- 「バケットを作成」ボタンをクリックします。
- バケット名とリージョンの設定
- バケット名:グローバルに一意の名前を入力します。バケット名は、AWS全体で重複できないため、ユニークな名前を設定します。例:「my-app-data-2026」など。
- リージョン:データを保存するリージョンを選択します。リージョン選択は、データのレイテンシやコスト、コンプライアンス要件に影響します。
- オブジェクト所有権の設定
- オブジェクト所有権:デフォルトでは「オブジェクトの所有者がバケット所有者になる」を選択します。これにより、バケット所有者がオブジェクトの所有権を持ちます。
- 「ACLを無効にする(推奨)」を選択します。ACL(アクセス制御リスト)は非推奨となっており、IAMポリシーやバケットポリシーを使用することが推奨されています。
- ブロックパブリックアクセス設定
- パブリックアクセスをすべてブロック:デフォルトで有効になっています。これはセキュリティ上のベストプラクティスです。必要に応じて、特定のアクセスのみ許可する設定を行います。
- バケットバージョニングの設定
- バージョニング:有効にします。バージョニングを有効にすると、オブジェクトの変更履歴を保持でき、誤って削除したファイルを復元することが可能になります。
- 暗号化の設定
- デフォルトの暗号化:SSE-S3(AWS管理の暗号化キー)を選択します。これにより、オブジェクトは自動的に暗号化されます。より高度なセキュリティが必要な場合は、SSE-KMS(カスタマーマスターキー)を使用します。
- オブジェクトロックの設定(任意)
- オブジェクトロック:規制要件やコンプライアンスのために、オブジェクトの削除や変更を一定期間禁止する場合に有効にします。WORM(Write Once Read Many)モードで動作します。
- タグ付け(任意)
- タグ:バケットにタグを追加します。タグはコスト管理やアクセス制御に役立ちます。例:「Environment=Production」「Team=DataEngineering」など。
- 確認と作成
- 設定内容を確認し、「バケットを作成」ボタンをクリックします。
2. AWS S3バケット…
バケットを作成する際には、以下のベストプラクティスに従うことで、セキュリティと運用効率を高めることができます。
- リージョンの選択:
- データの保存場所は、ユーザーやシステムとの距離(レイテンシ)やコスト、コンプライアンス要件を考慮して選択します。例えば、日本国内のユーザー向けのサービスであれば、東京リージョン(ap-northeast-1)が適しています。
- バケット命名規則:
- バケット名は、プロジェクト名や用途、環境(dev/stg/prod)を含めることで、管理が容易になります。例:「company-name-app-data-prod-2026」など。
- アクセス制御の原則:
- 原則として、パブリックアクセスをブロックし、必要最小限のアクセス権限のみ付与します。IAMポリシーやバケットポリシーを使用して、アクセス制御を行います。
- 暗号化の有効化:
- デフォルトの暗号化を有効にし、機密データはSSE-KMSで暗号化します。暗号化キーの管理は、AWS KMSを使用することで、セキュリティと監査機能を強化できます。
- バージョニングの有効化:
- バージョニングを有効にすることで、誤って削除したファイルや古いバージョンのファイルを復元できます。ストレージコストは増加しますが、データ保護の観点から推奨されます。
- ライフサイクルポリシーの設定:
- 古いオブジェクトを自動的に安価なストレージクラスに移行したり、削除したりするライフサイクルポリシーを設定します。これにより、ストレージコストを最適化できます。
- モニタリングとログ記録:
- S3アクセスログを有効にし、CloudWatch LogsやAWS CloudTrailでログを収集・分析します。これにより、不正アクセスや異常なアクセスパターンを検出できます。
次章では、バケット内のオブジェクトを管理する方法について解説します。
オブジェクトのアップロード・管理・ダウンロード方法
1. AWS S3へのオブ…
AWS S3にオブジェクトをアップロードする方法は、主に以下の3つがあります。
- AWS Management Consoleからのアップロード
- AWS CLIを使用したアップロード
- AWS SDK(Python、JavaScriptなど)を使用したアップロード
ここでは、それぞれの方法について詳しく解説します。
1.1 AWS Management Consoleからのアップロード
最も簡単な方法は、AWS Management Consoleを使用することです。以下の手順に従って、オブジェクトをアップロードします。
- AWS Management Consoleにログインし、S3サービスを開きます。
- アップロードしたいバケットを選択します。
- 「アップロード」ボタンをクリックします。
- 「ファイルを追加」ボタンをクリックし、ローカルからアップロードしたいファイルを選択します。
- 必要に応じて、以下のオプションを設定します。
- プロパティ:オブジェクトのメタデータ(例:Content-Type、Cache-Controlなど)を設定します。
- 暗号化:デフォルトの暗号化が有効になっていない場合は、暗号化方法を選択します。
- ストレージクラス:オブジェクトのストレージクラスを選択します。デフォルトはStandardです。
- 「アップロード」ボタンをクリックします。
アップロードが完了すると、コンソール上でアップロードしたファイルを確認できます。
1.2 AWS CLIを使用したアップロード
AWS CLIを使用すると、コマンドラインから効率的にオブジェクトをアップロードできます。以下は、AWS CLIを使用したアップロード手順です。
- AWS CLIのインストールと設定
- AWS CLIをインストールします。公式ドキュメント(AWS CLIのインストール)を参照してください。
- 以下のコマンドで、AWS CLIを設定します。
aws configure
設定時に、AWSアクセスキーID、シークレットアクセスキー、デフォルトリージョン、デフォルト出力形式を入力します。
- オブジェクトのアップロード
- 以下のコマンドで、オブジェクトをアップロードします。
aws s3 cp ローカルファイルパス s3://バケット名/オブジェクトキー
例:
aws s3 cp /home/user/data.csv s3://my-app-data-2026/data/data.csv
- オプションの設定
- ストレージクラスを指定する場合は、–storage-classオプションを使用します。
aws s3 cp /home/user/data.csv s3://my-app-data-2026/data/data.csv --storage-class STANDARD_IA
暗号化を有効にする場合は、–sseオプションを使用します。
aws s3 cp /home/user/data.csv s3://my-app-data-2026/data/data.csv --sse AES256
1.3 AWS SDKを使用したアップロード
AWS SDKを使用すると、プログラムからS3にオブジェクトをアップロードできます。以下は、Python(boto3)を使用したアップロード例です。
- boto3のインストール
- 以下のコマンドで、boto3をインストールします。
pip install boto3
- Pythonスクリプトの作成
- 以下のスクリプトを作成します。
import boto3
S3クライアントの作成
s3 = boto3.client('s3')バケット名とオブジェクトキーを指定
bucket_name = 'my-app-data-2026' object_key = 'data/data.csv'ローカルファイルをアップロード
s3.upload_file('/home/user/data.csv', bucket_name, object_key) print(f"オブジェクト {object_key} をバケット {bucket_name} にアップロードしました。") - スクリプトの実行
- スクリプトを実行します。
python upload_to_s3.py
2. AWS S3における…
AWS S3では、オブジェクトの管理機能が充実しています。以下に、主な管理機能とその使い方を解説します。
2.1 オブジェクトの一覧表示
バケット内のオブジェクトを一覧表示するには、以下の方法があります。
- AWS Management Console:
- バケットを選択し、オブジェクトタブを開くと、オブジェクトの一覧が表示されます。
- AWS CLI:
- 以下のコマンドで、オブジェクトを一覧表示します。
aws s3 ls s3://バケット名/
特定のプレフィックス(フォルダ)内のオブジェクトを一覧表示する場合は、以下のコマンドを使用します。
aws s3 ls s3://バケット名/プレフィックス/
- AWS SDK:
- Python(boto3)を使用した例です。
import boto3 s3 = boto3.client('s3') response = s3.list_objects_v2(Bucket='my-app-data-2026') for obj in response.get('Contents', []): print(obj['Key'])
2.2 オブジェクトのダウンロード
オブジェクトをダウンロードするには、以下の方法があります。
- AWS Management Console:
- ダウンロードしたいオブジェクトを選択し、「ダウンロード」ボタンをクリックします。
- AWS CLI:
- 以下のコマンドで、オブジェクトをダウンロードします。
aws s3 cp s3://バケット名/オブジェクトキー ローカルファイルパス
例:
aws s3 cp s3://my-app-data-2026/data/data.csv /home/user/downloads/data.csv
- AWS SDK:
- Python(boto3)を使用した例です。
import boto3 s3 = boto3.client('s3') s3.download_file('my-app-data-2026', 'data/data.csv', '/home/user/downloads/data.csv') print("オブジェクトをダウンロードしました。")
2.3 オブジェクトの削除
オブジェクトを削除するには、以下の方法があります。
- AWS Management Console:
- 削除したいオブジェクトを選択し、「削除」ボタンをクリックします。
- AWS CLI:
- 以下のコマンドで、オブジェクトを削除します。
aws s3 rm s3://バケット名/オブジェクトキー
例:
aws s3 rm s3://my-app-data-2026/data/data.csv
複数のオブジェクトを削除する場合は、–recursiveオプションを使用します。
aws s3 rm s3://バケット名/プレフィックス/ --recursive
- AWS SDK:
- Python(boto3)を使用した例です。
import boto3 s3 = boto3.client('s3') s3.delete_object(Bucket='my-app-data-2026', Key='data/data.csv') print("オブジェクトを削除しました。")
2.4 オブジェクトのメタデータ編集
オブジェクトのメタデータ(例:Content-Type、Cache-Controlなど)を編集するには、以下の方法があります。
- AWS Management Console:
- オブジェクトを選択し、「プロパティ」タブを開きます。メタデータを編集し、「保存」ボタンをクリックします。
- AWS CLI:
- 以下のコマンドで、オブジェクトのメタデータを編集します。
aws s3 cp s3://バケット名/オブジェクトキー s3://バケット名/オブジェクトキー --metadata-directive REPLACE --metadata "key1=value1,key2=value2"
例:
aws s3 cp s3://my-app-data-2026/data/data.csv s3://my-app-data-2026/data/data.csv --metadata-directive REPLACE --metadata "Content-Type=text/csv,Cache-Control=max-age=3600"
- AWS SDK:
- Python(boto3)を使用した例です。
import boto3 s3 = boto3.client('s3')オブジェクトのコピー(メタデータを更新)
copy_source = { 'Bucket': 'my-app-data-2026', 'Key': 'data/data.csv' } s3.copy_object( Bucket='my-app-data-2026', Key='data/data.csv', CopySource=copy_source, MetadataDirective='REPLACE', Metadata={'Content-Type': 'text/csv', 'Cache-Control': 'max-age=3600'} ) print("オブジェクトのメタデータを更新しました。")
次章では、ストレージクラスの選択とコスト最適化戦略について解説します。
ストレージクラスの選択とコスト最適化戦略
1. AWS S3のストレ…
AWS S3は、用途に応じて6種類のストレージクラスを提供しています。各ストレージクラスは、耐久性、可用性、レイテンシ、コストが異なります。以下に、各ストレージクラスの特徴をまとめます。
| ストレージクラス | 耐久性 | 可用性 | レイテンシ | コスト(月額/GB) | 用途 |
|---|---|---|---|---|---|
| S3 Standard | 99.999999999% | 99.95% | ミリ秒単位 | 0.023 USD | 頻繁にアクセスされるデータ、動的なウェブサイト、アプリケーションログなど |
| S3 Intelligent-Tiering | 99.999999999% | 99.9% | ミリ秒単位 | 0.023 USD(+監視・移行コスト) | アクセスパターンが不明なデータ、頻繁にアクセスされないデータ |
| S3 Standard-IA | 99.999999999% | 99.9% | ミリ秒単位 | 0.0125 USD | 1年に1〜2回程度アクセスされるデータ、バックアップデータ |
| S3 One Zone-IA | 99.999999999% | 99.5% | ミリ秒単位 | 0.01 USD | 1年に1〜2回程度アクセスされるデータ、1つのAZに保存しても問題ないデータ |
| S3 Glacier Instant Retrieval | 99.999999999% | 99.9% | ミリ秒単位 | 0.004 USD | 年に数回アクセスされるデータ、長期保存データ |
| S3 Glacier Flexible Retrieval | 99.999999999% | 該当なし | 数分から数時間 | 0.0036 USD | 年に1〜2回アクセスされるデータ、長期保存データ |
| S3 Glacier Deep Archive | 99.999999999% | 該当なし | 12時間以内 | 0.00099 USD | 年に1回以下アクセスされるデータ、規制要件に基づく長期保存データ |
出典:AWS S3 Storage Classes(2026年1月現在)
2. ストレージクラスの選…
ストレージクラスを選択する際には、以下の基準を考慮します。
- アクセス頻度:
- データにどれくらいの頻度でアクセスするかを考慮します。頻繁にアクセスされるデータにはS3 Standard、まれにアクセスされるデータにはS3 IAやGlacierを選択します。
- データの重要性:
- データの重要性に応じて、耐久性と可用性を選択します。重要なデータにはS3 StandardやS3 Intelligent-Tieringを、重要度の低いデータにはS3 Glacier Deep Archiveを選択します。
- コスト:
- ストレージコストは、データ容量とストレージクラスによって異なります。コストを最適化するためには、データのライフサイクルに応じてストレージクラスを変更することが重要です。
- 取得時間:
- GlacierやGlacier Deep Archiveなどのストレージクラスでは、データの取得に時間がかかります。リアルタイムでのアクセスが必要な場合は、S3 StandardやS3 Intelligent-Tieringを選択します。
- リージョン:
- データの保存場所(リージョン)によって、ストレージコストが異なります。リージョン間のデータ転送コストも考慮する必要があります。
3. ストレージクラスの設…
3.1 AWS Management Consoleからの設定
AWS Management Consoleを使用して、ストレージクラスを設定するには、以下の手順に従います。
- AWS Management Consoleにログインし、S3サービスを開きます。
- ストレージクラスを設定したいバケットを選択します。
- 「プロパティ」タブを開きます。
- 「ストレージクラス」セクションで、「編集」ボタンをクリックします。
- 希望するストレージクラスを選択します。
- 「保存」ボタンをクリックします。
3.2 AWS CLIを使用した設定
AWS CLIを使用して、ストレージクラスを設定するには、以下のコマンドを使用します。
aws s3 cp s3://バケット名/オブジェクトキー s3://バケット名/オブジェクトキー --storage-class STORAGE_CLASS
例:
aws s3 cp s3://my-app-data-2026/data/data.csv s3://my-app-data-2026/data/data.csv --storage-class STANDARD_IA
3.3 AWS SDKを使用した設定
AWS SDKを使用して、ストレージクラスを設定するには、以下のPython(boto3)の例を参考にしてください。




