AWS S3の使い方【2026年7月更新】:完全ガイドで学ぶストレージ活用術

AWS S3を活用すれば、コスト効率の高いスケーラブルなオブジェクトストレージを即座に導入できます。本記事では、S3の基本操作からセキュリティ設定、パフォーマンス最適化まで、実務で使える具体的な手順を網羅的に解説します。

目次

AWS S3とは何か

オブジェクトストレージの基…

S3の主要機能とユースケース

S3バケットの作成と基本設定

バケット作成手順(コンソー…

リージョン選択の重要性とコ…

S3オブジェクトの操作方法

ファイルアップロード・ダウ…

バージョニングとライフサイ…

セキュリティとアクセス制御

IAMポリシーによる権限管理

暗号化設定(SSE-S3・…

パフォーマンス最適化とコス…

ストレージクラスの選択基準

転送加速とCDN連携

トラブルシューティングとベ…

よくあるエラーとその解決法

運用時の注意点と監視方法

まとめ:S3を最大限活用す…

AWS S3とは何か

オブジェクトストレージの基…

AWS S3(Simple Storage Service)は、オブジェクトストレージと呼ばれるストレージモデルを採用しています。従来のファイルシステムやブロックストレージとは異なり、S3ではデータは「オブジェクト」として扱われます。各オブジェクトは、データ本体(最大5TB)、メタデータ、ユニークなキー(オブジェクト名)で構成されます。

オブジェクトストレージの特徴は以下の通りです:

  • 高い耐久性:S3は年間99.999999999%(11ナイン)の耐久性を保証しています。これは、データが複数のアベイラビリティーゾーンに自動的に複製されるためです。
  • 無制限のストレージ容量:バケットあたりのストレージ容量に制限はありません。必要に応じて自動的に拡張されます。
  • HTTP/HTTPSベースのアクセス:RESTful APIを介してデータにアクセスします。これにより、インターネット経由でのアクセスが容易になります。
  • 低レイテンシ:データの読み書きはミリ秒単位で行われます。

出典: AWS S3公式ドキュメント

S3の主要機能とユースケース

S3は単なるストレージサービスにとどまらず、多くの付加機能を提供しています。以下に主要な機能とそのユースケースを紹介します。

機能説明主なユースケース
バージョニングオブジェクトの複数バージョンを保持し、誤って削除したり上書きしたりした場合に復元できる機能ファイルの履歴管理、バックアップ、リカバリ
ライフサイクル管理オブジェクトのストレージクラスを自動的に移行したり、期限切れ後に削除したりする機能コスト削減、データの自動整理
クロスリージョンレプリケーション(CRR)あるリージョンのバケット内のオブジェクトを別のリージョンに自動的に複製する機能災害復旧、グローバルなデータ配置
イベント通知オブジェクトの作成、削除、復元などのイベントをトリガーにLambda関数やSQSキュー、SNSトピックに通知を送信する機能ワークフローの自動化、データ処理のトリガー
S3 Transfer AccelerationCloudFrontのエッジロケーションを経由してデータ転送を高速化する機能大容量ファイルの高速アップロード・ダウンロード
S3 Selectオブジェクト内の特定のデータをSQLクエリで抽出する機能大容量データの部分的な読み込み、分析
S3 Glacier統合アーカイブストレージクラス(Glacier・Glacier Deep Archive)との連携長期保存データのコスト最適化

これらの機能を活用することで、S3は以下のようなシナリオで幅広く利用されています:

  • バックアップとリカバリ:重要なデータのバックアップをS3に保存し、災害時のリカバリに備える
  • コンテンツ配信:静的ウェブサイトのホスティング、画像・動画の配信にS3を利用
  • ビッグデータ分析:ログファイルやデータセットをS3に保存し、AthenaやEMRで分析
  • アプリケーションストレージ:アプリケーションの実行ファイル、設定ファイル、一時ファイルの保存
  • データレイク:企業内のさまざまなデータソースをS3に集約し、分析基盤として活用

S3バケットの作成と基本設定

バケット作成手順(コンソー…

S3バケットを作成する方法は、AWS Management Console、AWS CLI、Infrastructure as Code(IaC)ツール(Terraform・CloudFormation)など複数あります。ここでは、それぞれの方法でバケットを作成する手順を解説します。

AWS Management Consoleから作成する

  1. AWS Management Consoleにログインし、S3サービスにアクセスします。
  2. 「バケットを作成」をクリックします。
  3. バケット名を入力します。バケット名はグローバルに一意である必要があります。例: my-unique-bucket-name-202607
  4. リージョンを選択します。リージョンはデータの保存場所であり、レイテンシやコストに影響します。リージョン選択の詳細は後述します。
  5. オブジェクト所有権を設定します。デフォルトでは「オブジェクトを所有するバケット所有者」を選択します。
  6. ブロックパブリックアクセス設定を行います。デフォルトではすべてのパブリックアクセスがブロックされています。必要に応じて設定を変更します。
  7. バージョニングを有効化します。バージョニングは後からでも有効化できますが、早めに設定しておくとデータの保護に役立ちます。
  8. 暗号化を設定します。デフォルトではSSE-S3(AWS管理の暗号化キー)が使用されますが、SSE-KMS(カスタマー管理の暗号化キー)を使用することもできます。
  9. 「バケットを作成」をクリックします。

AWS CLIから作成する

AWS CLIを使用してバケットを作成するには、以下のコマンドを実行します。リージョンは--regionオプションで指定します。

aws s3api create-bucket --bucket my-unique-bucket-name-202607 --region ap-northeast-1

バージョニングを有効化するには、以下のコマンドを実行します。

aws s3api put-bucket-versioning --bucket my-unique-bucket-name-202607 --versioning-configuration Status=Enabled

Terraformから作成する

Terraformを使用してS3バケットを作成するには、以下のようなコードを記述します。

resource "aws_s3_bucket" "example" {
  bucket = "my-unique-bucket-name-202607"
  acl    = "private"

  versioning {
    enabled = true
  }

  server_side_encryption_configuration {
    rule {
      apply_server_side_encryption_by_default {
        sse_algorithm = "AES256"
      }
    }
  }
}

Terraformを実行するには、terraform initterraform planterraform applyの順にコマンドを実行します。

リージョン選択の重要性とコ…

S3バケットを作成する際には、リージョンの選択が非常に重要です。リージョンはデータの保存場所であり、以下の要素に影響を与えます。

  • レイテンシ:ユーザーとリージョン間の距離が近いほど、データ転送時のレイテンシが低くなります。例えば、日本国内のユーザーにサービスを提供する場合は、ap-northeast-1(東京)リージョンを選択すると良いでしょう。
  • コスト:リージョンによってストレージコストやデータ転送コストが異なります。例えば、us-east-1(バージニア北部)リージョンは他のリージョンに比べてコストが低い傾向がありますが、日本からのデータ転送には高いコストがかかる可能性があります。
  • コンプライアンス:特定のリージョンでは、データ保護法や規制により、データをそのリージョン内に保存することが求められる場合があります。例えば、EU圏内のユーザーにサービスを提供する場合は、eu-west-1(アイルランド)リージョンを選択する必要があるかもしれません。
  • 可用性:リージョンによっては、自然災害やインフラ障害のリスクが異なります。複数のリージョンにデータを複製することで、災害時のデータ喪失リスクを軽減できます。

以下の表に、主要なリージョンとその特徴をまとめます。

リージョン名リージョンID主な特徴ストレージコスト(月額/GB)データ転送コスト(GBあたり)
米国東部(バージニア北部)us-east-1AWSのフラッグシップリージョン。多くのサービスが最初にリリースされる$0.023$0.09(他リージョンへの転送)
米国西部(オレゴン)us-west-2米国西海岸に位置し、アジア太平洋地域とのレイテンシが比較的低い$0.023$0.09(他リージョンへの転送)
欧州(アイルランド)eu-west-1EU圏内のユーザーにサービスを提供する際に適している$0.023$0.09(他リージョンへの転送)
アジア太平洋(東京)ap-northeast-1日本国内のユーザーに最適。レイテンシが低い$0.025$0.09(他リージョンへの転送)
アジア太平洋(シンガポール)ap-southeast-1東南アジア地域にサービスを提供する際に適している$0.025$0.09(他リージョンへの転送)

出典: AWS S3料金表(2026年7月現在)

リージョン選択の際には、これらの要素を総合的に考慮し、最適なリージョンを選択してください。また、複数のリージョンにデータを複製することで、災害時のデータ喪失リスクを軽減することも検討してください。

S3オブジェクトの操作方法

ファイルアップロード・ダウ…

S3にオブジェクトをアップロード・ダウンロードする方法は、AWS Management Console、AWS CLI、SDK(Python・JavaScript・Javaなど)を使用する方法があります。ここでは、それぞれの方法でファイルを操作する手順を解説します。

AWS Management Consoleからアップロード・ダウンロードする

  1. AWS Management Consoleにログインし、S3サービスにアクセスします。
  2. 対象のバケットを選択します。
  3. 「アップロード」をクリックします。
  4. ファイルを選択します。複数のファイルをドラッグ&ドロップすることもできます。
  5. アップロードオプションを設定します。以下のオプションがあります:
    • ストレージクラス:Standard・Intelligent-Tiering・Glacierなどから選択
    • 暗号化:SSE-S3・SSE-KMS・クライアント側暗号化から選択
    • メタデータ:オブジェクトに関する追加情報を設定
    • タグ:オブジェクトにタグを付与
  6. 「アップロード」をクリックします。
  7. ダウンロードするには、対象のオブジェクトを選択し、「ダウンロード」をクリックします。

AWS CLIからアップロード・ダウンロードする

AWS CLIを使用してファイルをアップロード・ダウンロードするには、以下のコマンドを実行します。

ファイルをアップロードする

aws s3 cp /path/to/local/file s3://my-bucket-name/path/to/destination/

ファイルをダウンロードする

aws s3 cp s3://my-bucket-name/path/to/source/file /path/to/local/destination/

ディレクトリ全体をアップロード・ダウンロードする--recursiveオプションを使用します。

aws s3 cp /path/to/local/directory s3://my-bucket-name/path/to/destination/ --recursive

Python SDK(boto3)を使用してアップロード・ダウンロードする

Pythonのライブラリを使用してS3にアクセスするには、以下の手順で行います。

boto3のインストール

pip install boto3

Pythonスクリプトでアップロードする

import boto3

s3 = boto3.client('s3')
bucket_name = 'my-bucket-name'
file_path = '/path/to/local/file'
object_key = 'path/to/destination/file'

s3.upload_file(file_path, bucket_name, object_key)

Pythonスクリプトでダウンロードする

import boto3

s3 = boto3.client('s3')
bucket_name = 'my-bucket-name'
object_key = 'path/to/source/file'
file_path = '/path/to/local/destination/file'

s3.download_file(bucket_name, object_key, file_path)

バージョニングとライフサイ…

S3のバージョニングとライフサイクル管理は、データの保護とコスト削減に役立つ重要な機能です。これらの機能を活用することで、誤って削除したファイルを復元したり、古いデータを自動的に安価なストレージクラスに移行したりできます。

バージョニングの有効化と操作

バージョニングを有効化するには、以下の手順で行います。

  1. AWS Management Consoleにログインし、S3サービスにアクセスします。
  2. 対象のバケットを選択します。
  3. 「プロパティ」タブをクリックします。
  4. 「バージョニング」セクションで「編集」をクリックします。
  5. バージョニングを有効化し、「保存」をクリックします。

バージョニングが有効化されると、オブジェクトのバージョンが自動的に保持されるようになります。例えば、同じオブジェクト名でファイルをアップロードすると、古いバージョンは削除されずに保持されます。

バージョン管理されたオブジェクトを操作する際には、以下の点に注意してください:

  • 削除マーク:オブジェクトを削除すると、削除マークが付与されます。実際のオブジェクトは削除されませんが、リストアップされなくなります。
  • 完全な削除:オブジェクトを完全に削除するには、すべてのバージョンと削除マークを削除する必要があります。
  • コスト:バージョニングを有効化すると、ストレージコストが増加します。古いバージョンのオブジェクトは、必要に応じて削除するか、ライフサイクル管理で自動的に削除することを検討してください。

バージョン管理されたオブジェクトをリストアするには、以下の手順で行います。

  1. AWS Management Consoleにログインし、S3サービスにアクセスします。
  2. 対象のバケットを選択します。
  3. 「オブジェクト」タブをクリックします。
  4. 「バージョンの表示」をクリックします。
  5. リストアしたいバージョンを選択し、「ダウンロード」をクリックします。

ライフサイクル管理の設定

ライフサイクル管理を使用すると、オブジェクトのストレージクラスを自動的に移行したり、期限切れ後に削除したりできます。例えば、30日経過したオブジェクトをStandard-IA(低頻度アクセス)ストレージクラスに移行し、365日経過したオブジェクトをGlacierに移行し、730日経過したオブ

【編集・制作ポリシー】
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営