AWS S3の使い方とは?設定方法と注意点を解説

※本記事にはプロモーションを含む場合があります。
- AWS S3の耐久性は99.999999999%(イレブンナイン)とされ、1000万個のオブジェクトを保存した場合に平均1個程度が消失する計算になるといわれています
- 東京リージョンのS3標準ストレージは1GBあたり月額約0.025ドル、データ量が増えるほど従量課金で費用が積み上がります
- ルートアカウントを直接使わず、IAMユーザーを作成して最小権限で運用するのが実務上の基本とされています
- ライフサイクルポリシーを組むことで、保存コストを30〜70%程度圧縮できたという事例も報告されています
- アップロード手段は主に4種類あり、ファイルサイズや自動化の要否で使い分けるのが効率的です
AWS S3(Simple Storage Service)は2006年にサービスが開始されたオブジェクトストレージで、2026年8月時点でも多くの企業システムのデータ基盤として使われ続けています。静的サイトのホスティングからデータレイクの構築、バックアップ・アーカイブ、機械学習用データセットの保管まで、用途は幅広い状況です。この記事では、アカウント準備からバケット設計、アップロード方法、ストレージクラスの選び方、セキュリティ設定、運用監視までを実務目線で整理しました。
S3の基本と特徴
S3はオブジェクト単位でデータを保存する仕組みで、ファイルシステムのような階層構造ではなく「バケット」と呼ばれる箱の中に「キー」(パスのような文字列)を持つオブジェクトを格納します。容量の上限は事実上なく、1オブジェクトの最大サイズは5TBまで対応しています。可用性については年間99.9%が目安とされ、これは1年間のうちおよそ8.76時間程度のダウンタイムに相当する水準です。
コスト構造は従量課金制で、保存容量・リクエスト回数・データ転送量の3要素で決まります。例えば標準ストレージで100GBを1か月保存した場合、東京リージョンではおよそ2.5ドル前後(為替により変動)が目安になります。加えて、GETリクエストは1万回あたり0.0037ドル程度、PUTリクエストは1万回あたり0.0047ドル程度が課金されるため、リクエスト回数が多いアプリケーションではこの部分のコストも無視できません。
連携面では、Lambda・Glue・Athena・CloudFrontなど他のAWSサービスとシームレスに組み合わせられる点が強みです。例えばS3にファイルがアップロードされたタイミングでLambda関数を自動起動する構成は、画像のリサイズ処理やログの前処理などでよく使われるパターンです。
アカウント作成の手順
S3を使い始めるにはAWSアカウントの作成とIAMユーザーの設定が最初のステップになります。ルートアカウントをそのまま日常運用に使うと権限が広すぎるため、専用のIAMユーザーを作って運用するのが定石です。
- AWS公式サイトでアカウントを新規作成し、メールアドレス・パスワード・連絡先情報を登録する
- クレジットカードなど支払い情報を登録する(無料利用枠内でも登録自体は必須)
- SMSまたは音声通話で電話番号認証を行う
- サポートプランを選択する(基本プランは無料)
- IAMコンソールから「ユーザーを追加」を選び、s3-adminなど分かりやすいユーザー名を設定する
- AmazonS3FullAccessなど既存ポリシーをアタッチするか、バケット単位のカスタムポリシーを作成する
- CLIやSDKから利用する場合はアクセスキーを発行し、シークレットアクセスキーを安全な場所に保管する
- ルートアカウントと主要なIAMユーザーの両方でMFA(多要素認証)を有効化する
アクセスキーの管理は特に注意が必要です。漏洩すると第三者にバケット内のデータへアクセスされるリスクがあるため、コードやリポジトリに直接埋め込まず、環境変数やAWS Secrets Managerなどで管理するのが望ましいとされています。
バケット命名とリージョン選定
バケット名はAWS全体でグローバルに一意である必要があり、3〜63文字の小文字英数字とハイフンのみ使用できます。アンダースコアやスラッシュ、大文字は使用できず、IPアドレス形式の名前も禁止されています。命名時にはプロジェクト名・環境名(dev/staging/prod)・日付などを組み合わせると、後々の管理がしやすくなります。
| リージョン | コード | ストレージコスト(1GB/月) | 備考 |
|---|---|---|---|
| 米国東部(バージニア北部) | us-east-1 | 約0.023ドル | 最も安価な部類のリージョン |
| 米国西部(オレゴン) | us-west-2 | 約0.023ドル | 米国西海岸向け |
| 欧州(アイルランド) | eu-west-1 | 約0.025ドル | EU圏のデータ保管要件に対応 |
| アジアパシフィック(東京) | ap-northeast-1 | 約0.025ドル | 日本国内向けサービスに最適 |
| アジアパシフィック(シンガポール) | ap-southeast-1 | 約0.025ドル | 東南アジア向け |
日本国内の利用者に配信するサービスであれば東京リージョンを選ぶとレイテンシを抑えやすく、コストを最優先するグローバル向けサービスであればバージニア北部が候補になります。バケット名とリージョンは作成後に変更できないため、命名規則と用途を事前に整理してから作成する流れが安全です。
アップロード方法の比較
S3へのアップロード方法は主に4種類あり、ファイルサイズや自動化のニーズに応じて使い分けます。
| 方法 | 最大ファイルサイズ | 特徴 | 向いている用途 |
|---|---|---|---|
| Management Console | 5GB | ドラッグ&ドロップで操作できるGUI | 数MB〜数GB程度の単発アップロード |
| AWS CLI | 5TB | コマンドで操作でき、スクリプト化しやすい | 定期バックアップや大量ファイルの一括処理 |
| AWS SDK(Python/Node.js等) | 5TB | アプリケーションに組み込んで柔軟に制御 | バッチ処理やシステム連携 |
| Transfer Acceleration | 5TB | AWSのグローバル網を経由し転送を高速化 | 遠隔地からの大容量アップロード |
CLIでのアップロードは aws configure でアクセスキーとリージョンを設定した後、aws s3 cp local-file.txt s3://your-bucket-name/path/to/object.txt のような1行のコマンドで完了します。フォルダ全体を同期したい場合は aws s3 sync を使うと、変更差分だけを転送できるため、100GB規模のバックアップでも2回目以降の転送時間を大幅に短縮できたという報告もあります。
SDKを使う場合はPythonのBoto3が代表的で、pip install boto3 でインストール後、数行のコードでアップロード処理を組み込めます。画像処理やログ集計のパイプラインに組み込みやすく、Lambdaのトリガーと組み合わせた自動化構成もよく見られます。
ストレージクラスの選び方
S3にはアクセス頻度に応じた複数のストレージクラスがあり、選び方次第でコストが大きく変わります。
| ストレージクラス | 想定用途 | 取り出し時間 | コスト特性 |
|---|---|---|---|
| S3 Standard | 頻繁にアクセスするデータ | 即時 | 最も高いが取り出し料金なし |
| Intelligent-Tiering | アクセス頻度が読めないデータ | 即時 | 自動で階層を切り替え最適化 |
| Standard-IA | 月1回程度のアクセス | 即時 | 保存費は安いが取り出し料金あり |
| Glacier Flexible Retrieval | 年数回程度のアーカイブ | 数分〜十数時間 | 保存費は大幅に安い |
| Glacier Deep Archive | 長期保管用の記録データ | 最大12時間程度 | 最も安価な保管費 |
ライフサイクルポリシーを設定すれば、作成から30日経過後にStandard-IAへ、90日経過後にGlacierへ自動移行するといったルールを組めます。ログデータのように「直近1か月はよく参照するが、それ以降はほぼ見ない」という性質のデータでは、この自動移行だけで保存コストを30〜70%程度圧縮できたという事例も報告されています。
セキュリティ設定のコツ
S3のセキュリティ設定は、バケット作成時のデフォルトが強めに設定されているため、初期状態のまま運用すれば大きな事故は起きにくい設計になっています。とはいえ、公開設定や暗号化、アクセス権限は用途ごとに見直しておく余地があります。
暗号化には主に3つの方式があります。SSE-S3はAWSが管理する鍵で自動暗号化する方式で追加設定がほぼ不要、SSE-KMSはAWS KMSのカスタマー管理キーを使い、鍵のローテーションやアクセスログを細かく管理できます。クライアント側暗号化はアップロード前にアプリケーション側で暗号化する方式で、AWS側にも平文データを渡したくないケースに向いています。
アクセス制御ではIAMポリシーとバケットポリシーを組み合わせます。読み取り専用アクセスを許可する場合は、以下のようなポリシーを付与するのが一般的です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}クロスアカウントでのアクセスが必要な場合は、バケットポリシーに相手アカウントのARNを明記し、必要な操作(GetObjectやPutObjectなど)だけを許可する形にすると被害の範囲を限定できます。
セキュリティ設定チェックリスト
- □ パブリックアクセスブロックが有効になっているか確認した
- □ ルートアカウントでMFAを有効化した
- □ IAMユーザーには最小権限のポリシーのみ付与した
- □ サーバー側暗号化(SSE-S3またはSSE-KMS)を設定した
- □ バケットポリシーの許可範囲を月1回程度の頻度で見直す運用にした
- □ アクセスキーをコードに直書きせず環境変数等で管理している
運用監視と分析ツール
S3は作成して終わりではなく、継続的な監視とコスト分析が運用上のポイントになります。CloudWatchと組み合わせると、バケットサイズの推移やリクエスト数、4xx/5xxエラー率をダッシュボードで可視化でき、閾値を超えた場合にSNS経由でアラートを飛ばす設定も可能です。例えば、エラー率が5%を超えた場合に通知するアラームを組んでおけば、アプリケーション側の不具合や権限設定ミスに早期に気づける体制を作れます。
S3 Storage Lensを使うと、組織内の複数バケットを横断してストレージ使用量やアクセスパターンを分析できます。無料のダッシュボードでも基本的な傾向は把握でき、有料の高度なメトリクスを使えば、バケットごと・プレフィックスごとのコスト内訳まで確認できます。ストレージ全体の見直しを四半期に1回程度のペースで行うと、不要なオブジェクトの削除やストレージクラスの移行漏れに気づきやすくなります。
大容量ファイルの転送効率を高めたい場合は、Transfer Accelerationの有効化も選択肢のひとつです。遠隔地からのアップロードでは、通常経路と比べて転送時間が体感で数十%短縮されたというケースも報告されています。ただし転送量に応じた追加料金が発生するため、費用対効果を見ながら適用するのが現実的です。
よくある質問
Q1. S3の無料利用枠はどれくらいですか?
A. アカウント作成から12か月間、S3標準ストレージ5GB、GETリクエスト2万回、PUTリクエスト2000回程度が無料枠として提供されているとされています(提供内容は変更される場合があります)。
Q2. バケット名を後から変更できますか?
A. できません。バケット名とリージョンは作成後に変更できないため、命名規則を確認したうえで作成前に慎重に決める必要があります。
Q3. S3とEBSやEFSの違いは何ですか?
A. S3はオブジェクトストレージでHTTP経由でアクセスするのに対し、EBSはEC2にアタッチするブロックストレージ、EFSは複数インスタンスから同時マウントできるファイルストレージという位置づけです。用途に応じて使い分けます。
Q4. 誤ってパブリック公開してしまった場合の対処法は?
A. 「パブリックアクセスをすべてブロック」設定をすぐに有効化し、バケットポリシーとACLを確認します。機密データが含まれていた場合は、アクセスログを確認して外部からの取得有無を調査する対応も検討します。
Q5. ライフサイクルポリシーはいつ設定すべきですか?
A. バケット作成時に合わせて設定しておくと、後からオブジェクトが増えた際の移行漏れを防ぎやすくなります。ログやバックアップ用途のバケットでは、作成初期から30日・90日といった移行ルールを組んでおくケースが多いです。
Q6. Glacierに保存したデータはすぐに取り出せますか?
A. ストレージクラスによって異なります。Glacier Flexible Retrievalは数分〜十数時間、Deep Archiveは最大12時間程度かかるとされているため、緊急でアクセスする可能性があるデータには不向きです。
本記事はInfra Academy編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。 編集ポリシーはこちら




