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

AWS S3を活用すれば、コスト効率の高いストレージソリューションを即座に導入できます。まずはバケット作成から始め、適切なアクセス制御と暗号化を設定することで、セキュアなデータ管理を実現しましょう。

本記事では、AWS S3の基本的な使い方から応用テクニックまで、実務で即活用できる知識を網羅的に解説します。ストレージクラスの選択肢、ライフサイクルポリシー、クロスリージョンレプリケーションなど、運用効率を高める機能も詳しく紹介します。AWS公式ドキュメントに準拠した手順で、初心者から上級者まで役立つ内容となっています。


目次


はじめに: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」を選択します。

  1. バケット作成画面への移動
    • コンソール右上のリージョン選択で、使用したいリージョンを選択します(例:東京リージョンの場合は「ap-northeast-1」)。リージョンはデータの保存場所を決定するため、用途に応じて適切なリージョンを選択しましょう。
    • 「バケットを作成」ボタンをクリックします。
  2. バケット名とリージョンの設定
    • バケット名:グローバルに一意の名前を入力します。バケット名は、AWS全体で重複できないため、ユニークな名前を設定します。例:「my-app-data-2026」など。
    • リージョン:データを保存するリージョンを選択します。リージョン選択は、データのレイテンシやコスト、コンプライアンス要件に影響します。
  3. オブジェクト所有権の設定
    • オブジェクト所有権:デフォルトでは「オブジェクトの所有者がバケット所有者になる」を選択します。これにより、バケット所有者がオブジェクトの所有権を持ちます。
    • 「ACLを無効にする(推奨)」を選択します。ACL(アクセス制御リスト)は非推奨となっており、IAMポリシーやバケットポリシーを使用することが推奨されています。
  4. ブロックパブリックアクセス設定
    • パブリックアクセスをすべてブロック:デフォルトで有効になっています。これはセキュリティ上のベストプラクティスです。必要に応じて、特定のアクセスのみ許可する設定を行います。
  5. バケットバージョニングの設定
    • バージョニング:有効にします。バージョニングを有効にすると、オブジェクトの変更履歴を保持でき、誤って削除したファイルを復元することが可能になります。
  6. 暗号化の設定
    • デフォルトの暗号化:SSE-S3(AWS管理の暗号化キー)を選択します。これにより、オブジェクトは自動的に暗号化されます。より高度なセキュリティが必要な場合は、SSE-KMS(カスタマーマスターキー)を使用します。
  7. オブジェクトロックの設定(任意)
    • オブジェクトロック:規制要件やコンプライアンスのために、オブジェクトの削除や変更を一定期間禁止する場合に有効にします。WORM(Write Once Read Many)モードで動作します。
  8. タグ付け(任意)
    • タグ:バケットにタグを追加します。タグはコスト管理やアクセス制御に役立ちます。例:「Environment=Production」「Team=DataEngineering」など。
  9. 確認と作成
    • 設定内容を確認し、「バケットを作成」ボタンをクリックします。

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を使用することです。以下の手順に従って、オブジェクトをアップロードします。

  1. AWS Management Consoleにログインし、S3サービスを開きます。
  2. アップロードしたいバケットを選択します。
  3. 「アップロード」ボタンをクリックします。
  4. 「ファイルを追加」ボタンをクリックし、ローカルからアップロードしたいファイルを選択します。
  5. 必要に応じて、以下のオプションを設定します。
    • プロパティ:オブジェクトのメタデータ(例:Content-Type、Cache-Controlなど)を設定します。
    • 暗号化:デフォルトの暗号化が有効になっていない場合は、暗号化方法を選択します。
    • ストレージクラス:オブジェクトのストレージクラスを選択します。デフォルトはStandardです。
  6. 「アップロード」ボタンをクリックします。

アップロードが完了すると、コンソール上でアップロードしたファイルを確認できます。

1.2 AWS CLIを使用したアップロード

AWS CLIを使用すると、コマンドラインから効率的にオブジェクトをアップロードできます。以下は、AWS CLIを使用したアップロード手順です。

  1. AWS CLIのインストールと設定
    • AWS CLIをインストールします。公式ドキュメント(AWS CLIのインストール)を参照してください。
    • 以下のコマンドで、AWS CLIを設定します。
    aws configure

    設定時に、AWSアクセスキーID、シークレットアクセスキー、デフォルトリージョン、デフォルト出力形式を入力します。

  2. オブジェクトのアップロード
    • 以下のコマンドで、オブジェクトをアップロードします。
    aws s3 cp ローカルファイルパス s3://バケット名/オブジェクトキー

    例:

    aws s3 cp /home/user/data.csv s3://my-app-data-2026/data/data.csv
  3. オプションの設定
    • ストレージクラスを指定する場合は、–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)を使用したアップロード例です。

  1. boto3のインストール
    • 以下のコマンドで、boto3をインストールします。
    pip install boto3
  2. 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} にアップロードしました。")
  3. スクリプトの実行
    • スクリプトを実行します。
    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 Standard99.999999999%99.95%ミリ秒単位0.023 USD頻繁にアクセスされるデータ、動的なウェブサイト、アプリケーションログなど
S3 Intelligent-Tiering99.999999999%99.9%ミリ秒単位0.023 USD(+監視・移行コスト)アクセスパターンが不明なデータ、頻繁にアクセスされないデータ
S3 Standard-IA99.999999999%99.9%ミリ秒単位0.0125 USD1年に1〜2回程度アクセスされるデータ、バックアップデータ
S3 One Zone-IA99.999999999%99.5%ミリ秒単位0.01 USD1年に1〜2回程度アクセスされるデータ、1つのAZに保存しても問題ないデータ
S3 Glacier Instant Retrieval99.999999999%99.9%ミリ秒単位0.004 USD年に数回アクセスされるデータ、長期保存データ
S3 Glacier Flexible Retrieval99.999999999%該当なし数分から数時間0.0036 USD年に1〜2回アクセスされるデータ、長期保存データ
S3 Glacier Deep Archive99.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を使用して、ストレージクラスを設定するには、以下の手順に従います。

  1. AWS Management Consoleにログインし、S3サービスを開きます。
  2. ストレージクラスを設定したいバケットを選択します。
  3. 「プロパティ」タブを開きます。
  4. 「ストレージクラス」セクションで、「編集」ボタンをクリックします。
  5. 希望するストレージクラスを選択します。
  6. 「保存」ボタンをクリックします。

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)の例を参考にしてください。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営