AWS S3の使い方完全ガイド【2026年版】

AWS S3を活用すれば、コスト効率の高いオブジェクトストレージを即座に導入できます。本記事では、S3の基本設定からセキュリティ、運用管理まで、実務で即座に活用できる具体的な手順を網羅します。初心者から上級者まで、段階的にスキルを向上させるための完全ガイドです。


目次


はじめに:AWS S3の概要とメリット

AWS S3(Simple Storage Service)は、業界をリードするオブジェクトストレージサービスです。2006年のリリース以来、99.999999999%(11ナイン)の耐久性を誇り、世界中の企業に採用されています。本ガイドでは、S3の基本概念から実務で役立つ具体的な使い方まで、段階的に解説します。

S3の最大の特徴は、拡張性とコスト効率のバランスです。ストレージ容量に制限がなく、データのアップロード・ダウンロードはHTTP/HTTPS経由で行われます。また、ストレージクラス(Standard, Intelligent-Tiering, Glacierなど)を目的に応じて選択できるため、コスト最適化が可能です。

例えば、頻繁にアクセスするデータはStandardクラスに保存し、アクセス頻度が低いデータはGlacierに移行することで、ストレージコストを最大80%削減できます(出典: AWS公式ドキュメント, 2025年1月時点)。


AWS S3の基本設定手順

S3を使い始めるには、AWSアカウントの作成とIAM設定、バケットの作成、オブジェクトの操作という3つのステップが必要です。以下で詳細を解説します。

AWSアカウントの作成とIAM設定

AWS S3を利用するには、まずAWSアカウントを作成します。アカウント作成は無料ですが、S3の利用にはストレージ容量に応じた料金が発生します。

AWSアカウント作成手順

  1. AWS公式サイトにアクセスし、「アカウントを作成する」をクリックします。
  2. メールアドレス、パスワード、連絡先情報を入力します。
  3. 電話番号の確認(SMSまたは音声通話)を行います。
  4. 支払い情報(クレジットカード)を登録します。AWS Free Tierを利用する場合でも、支払い情報は必須です。
  5. サポートプランを選択します。個人利用の場合は「ベーシックサポート(無料)」で問題ありません。

IAMユーザーの作成(推奨)

AWSアカウントのルートユーザーを直接使用することはセキュリティリスクが高いため、IAM(Identity and Access Management)ユーザーを作成して使用することを強く推奨します。

  1. AWS Management Consoleにログインし、IAMサービスを開きます。
  2. 左側のメニューから「ユーザー」を選択し、「ユーザーを追加」をクリックします。
  3. ユーザー名を入力し、アクセスの種類として「プログラムによるアクセス」と「AWS Management Consoleへのアクセス」を選択します。
  4. 「既存のポリシーを直接アタッチ」を選択し、「AmazonS3FullAccess」を検索してアタッチします。ただし、本番環境では必要最小限の権限(最小権限の原則)を適用することを推奨します。
  5. タグを追加(任意)し、ユーザーを作成します。
  6. 作成したユーザーの「認証情報」タブから、アクセスキーIDとシークレットアクセスキーをダウンロードします。これらは再度表示できないため、安全な場所に保管してください。

IAMポリシーのカスタマイズ(セキュリティ強化)

本番環境では、S3FullAccessではなく、必要な操作のみを許可するカスタムポリシーを作成します。例えば、特定のバケットにのみアクセスできるポリシーは以下のように定義します。

カスタムIAMポリシー例(特定のバケットのみアクセス可)

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:GetObject",
          "s3:PutObject",
          "s3:DeleteObject"
        ],
        "Resource": "arn:aws:s3:::your-bucket-name/*"
      }
    ]
  }

このポリシーをIAMユーザーにアタッチすることで、指定したバケットにのみアクセスできるようになります。

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

IAMの設定が完了したら、次はS3バケットを作成します。バケットはS3におけるデータを格納する「フォルダ」のようなもので、グローバルに一意な名前を付ける必要があります。

S3バケット作成手順

  1. AWS Management Consoleにログインし、S3サービスを開きます。
  2. 「バケットを作成」をクリックします。
  3. 以下の項目を設定します:
    • バケット名:グローバルで一意な名前を入力します(例:my-company-data-2026)。
    • リージョン:データを保存するリージョンを選択します。低レイテンシを重視する場合は、ユーザーに近いリージョンを選択します。
    • オブジェクト所有者:「オブジェクトを所有するバケット所有者」を選択します。
    • パブリックアクセスブロック:デフォルトで有効になっています。セキュリティを考慮して、有効のままにします。
    • 暗号化:デフォルトの暗号化(SSE-S3)を有効にします。
  4. 「バケットを作成」をクリックします。

バケットの基本設定

バケットを作成したら、以下の設定を行います。

  • バージョニング:有効にすることで、オブジェクトの変更履歴を保持できます。
  • サーバーアクセスログ:バケットへのアクセスログを記録します。
  • 転送加速:データ転送を高速化する機能です(有料オプション)。
  • イベント通知:特定のイベント(例:オブジェクトのアップロード)が発生した際に、SNSやLambdaをトリガーできます。

これらの設定は、バケット作成後に「プロパティ」タブから変更できます。

オブジェクトのアップロード・ダウンロード・削除

バケットを作成したら、次はオブジェクト(ファイル)の操作を行います。S3では、ファイルを「オブジェクト」と呼び、各オブジェクトには一意のキー(パス)が割り当てられます。

オブジェクトのアップロード

  1. 作成したバケットを開き、「アップロード」をクリックします。
  2. ファイルをドラッグ&ドロップするか、「ファイルを追加」をクリックしてファイルを選択します。
  3. 「アップロード」をクリックします。
  4. アップロードが完了すると、オブジェクトがバケットに表示されます。

オブジェクトのダウンロード

  1. ダウンロードしたいオブジェクトを選択します。
  2. 「アクション」メニューから「ダウンロード」を選択します。
  3. ファイルがローカルにダウンロードされます。

オブジェクトの削除

  1. 削除したいオブジェクトを選択します。
  2. 「アクション」メニューから「削除」を選択します。
  3. 確認ダイアログで「削除」をクリックします。

AWS CLIを使ったオブジェクト操作

AWS CLIを使用すると、コマンドラインから効率的にオブジェクトを操作できます。以下は代表的なコマンドです。

コマンド説明
aws s3 cp localfile.txt s3://bucket-name/ローカルファイルをS3バケットにアップロード
aws s3 cp s3://bucket-name/remotefile.txt .S3バケットからローカルにファイルをダウンロード
aws s3 ls s3://bucket-name/バケット内のオブジェクト一覧を表示
aws s3 rm s3://bucket-name/file.txtS3バケットからファイルを削除

AWS CLIのインストールと設定は、公式ドキュメントを参照してください。


S3のセキュリティ設定とベストプラクティス

S3は柔軟なアクセス制御機能を提供していますが、適切な設定を行わないとセキュリティリスクが発生します。以下では、S3のセキュリティ設定とベストプラクティスを解説します。

IAMポリシーとバケットポリシーの設定

S3のアクセス制御は、IAMポリシーとバケットポリシーの2つの方法で行います。IAMポリシーはユーザーやロールに対して適用され、バケットポリシーは特定のバケットに対して適用されます。

IAMポリシーの設定

IAMポリシーは、AWS Management ConsoleのIAMサービスから作成します。以下は、特定のバケットにのみ読み取りアクセスを許可するポリシー例です。

IAMポリシー例(読み取り専用アクセス)

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:GetObject"
        ],
        "Resource": "arn:aws:s3:::your-bucket-name/*"
      }
    ]
  }

バケットポリシーの設定

バケットポリシーは、特定のAWSアカウントやIPアドレスからのアクセスを制限できます。以下は、特定のIPアドレスからのみアクセスを許可するバケットポリシー例です。

バケットポリシー例(IP制限)

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::your-bucket-name/*",
        "Condition": {
          "IpAddress": {
            "aws:SourceIp": "192.0.2.0/24"
          }
        }
      }
    ]
  }

最小権限の原則

セキュリティを強化するために、常に最小権限の原則を適用します。不要な権限は削除し、必要な操作のみを許可します。例えば、開発環境と本番環境で異なるIAMポリシーを適用することで、リスクを最小化できます。

暗号化(SSE-S3, SSE-KMS, クライアント側暗号化)

S3では、データを暗号化して保存することで、不正アクセスから保護できます。暗号化には以下の3つの方法があります。

暗号化タイプ説明メリットデメリット
SSE-S3(サーバー側暗号化)AWSが管理するキーで暗号化します。設定が簡単、追加コストなしキー管理がAWSに依存
SSE-KMS(AWS KMSによる暗号化)AWS Key Management Service(KMS)で管理されるキーで暗号化します。高いセキュリティ、キーのローテーションが可能暗号化/復号化に追加コストが発生
クライアント側暗号化ユーザーが独自のキーで暗号化してからアップロードします。キーをユーザーが管理できる実装が複雑

SSE-S3の有効化

SSE-S3は、バケット作成時またはバケットプロパティから簡単に有効化できます。

  1. バケットを選択し、「プロパティ」タブを開きます。
  2. 「デフォルト暗号化」セクションで「編集」をクリックします。
  3. 暗号化タイプとして「Amazon S3キー(SSE-S3)」を選択します。
  4. 「保存」をクリックします。

SSE-KMSの有効化

SSE-KMSを使用するには、AWS KMSでカスタマーマスターキー(CMK)を作成する必要があります。

  1. AWS KMSサービスを開き、「暗号化キー」を選択します。
  2. 「暗号化キーを作成」をクリックし、キーの名前と説明を入力します。
  3. キー管理者とキーの使用者を設定します。
  4. バケットのデフォルト暗号化設定で、暗号化タイプとして「AWS KMS(SSE-KMS)」を選択し、作成したCMKを指定します。

暗号化のベストプラクティス

  • 機密データは必ず暗号化します。
  • SSE-KMSを使用する場合は、キーのローテーションを有効にします。
  • 暗号化されていないバケットは、定期的に監査します。

アクセス制御リスト(ACL)とCORS設定

S3のアクセス制御には、アクセス制御リスト(ACL)とクロスオリジンリソースシェアリング(CORS)設定があります。これらを適切に設定することで、セキュリティを強化できます。

アクセス制御リスト(ACL)

ACLは、バケットやオブジェクトに対して、誰がどのような操作を実行できるかを制御します。ACLには以下の4つのタイプがあります。

ACLタイプ説明
Private(デフォルト)所有者のみがアクセスできます。
PublicRead誰でも読み取りアクセスが可能です。
PublicReadWrite誰でも読み取りと書き込みが可能です(非推奨)。
AuthenticatedRead認証済みのAWSユーザーのみがアクセスできます。

CORS設定

CORS(Cross-Origin Resource Sharing)は、異なるドメイン間でのリソース共有を制御します。例えば、S3バケットに保存した画像をWebサイトで表示する場合に使用します。

CORS設定手順

  1. バケットを選択し、「許可」タブを開きます。
  2. 「CORS構成」セクションで「編集」をクリックします。
  3. 以下のようなJSON形式でCORSルールを定義します。

CORS設定例

[
    {
      "AllowedHeaders": ["*"],
      "AllowedMethods": ["GET"],
      "AllowedOrigins": ["https://example.com"],
      "ExposeHeaders": []
    }
  ]

この例では、https://example.comからのGETリクエストのみを許可しています。

セキュリティベストプラクティス

  • 不要なACL(PublicReadWriteなど)は使用しない。
  • CORS設定は必要最小限のオリジンとメソッドのみ許可する。
  • 定期的にACLとCORS設定をレビューし、不要な設定を削除する。

S3の運用管理と最適化テクニック

S3を効率的に運用するには、ライフサイクルポリシー、バージョニング、モニタリングなどの設定が不可欠です。以下では、これらの運用管理テクニックを解説します。

ライフサイクルポリシーの設定

ライフサイクルポリシーを使用すると、オブジェクトのストレージクラスを自動的に移行したり、期限切れのオブジェクトを削除したりできます。これにより、ストレージコストを最適化できます。

ライフサイクルポリシーの設定手順

  1. バケットを選択し、「管理」タブを開きます。
  2. 「ライフサイクルルール」セクションで「追加」をクリックします。
  3. ルール名を入力し、ルールを適用するオブジェクトのプレフィックス(例:images/)を指定します。
  4. 以下のようなルールを定義します。

ライフサイクルルール例

{
    "Rules": [
      {
        "ID": "MoveToIAAfter30Days",
        "Status": "Enabled",
        "Filter": {
          "Prefix": "documents/"
        },
        "Transitions": [
          {
            "Days": 30,
            "StorageClass": "STANDARD_IA"
          },
          {
            "Days": 90,
            "StorageClass": "GLACIER"
          }
        ],
        "Expiration": {
          "Days": 365
        }
      }
    ]
  }

この例では、documents/プレフィックスのオブジェクトを以下のように移行します。

  • 30日後にStandard IA(低頻度アクセス)に移行
  • 90日後にGlacier(アーカイブ)に移行
  • 365日後にオブジェクトを削除

ライフサイクルポリシーのベストプラクティス

  • アクセス頻度に応じてストレージクラスを選択します。
  • 不要なオブジェクトは定期的に削除します。
  • ライフサイクルルールをテスト環境で検証してから本番環境に適用します。

バージョニングとMFA削除の有効化

バージョニングを有効にすると、オブジェクトの変更履歴を保持できます。これにより、誤って削除したファイルを復元したり、古いバージョンにロールバックしたりできます。

バージョニングの有効化

  1. バケットを選択し、「プロパティ」タブを開きます。
  2. 「バージョニング」セクションで「編集」をクリックします。
  3. 「バージョニングを有効にする」を選択し、「保存」をクリックします。

MFA削除の有効化

MFA(Multi-Factor Authentication)削除を有効にすると、オブジェクトを削除する際にMFAデバイスによる認証が必要になります。これにより、不正な削除を防止できます。

  1. バケットを選択し、「プロパティ」タブを開きます。
  2. 「バージョニング」セクションで「MFA削除を有効にする」を選択します。
  3. MFAデバイス(例:ハードウェアトークンやモバイルアプリ)を登録します。

バージョニングのベストプラクティス

  • 重要なデータは必ずバージョニングを有効にします。
  • ライフサイクルポリシーと組み合わせて、古いバージョンを自動的に削除します。
  • MFA削除を有効にして、不正な削除を防止します。

CloudWatchとS3アクセスログの設定

S3の利用状況やアクセスパターンを監視するには、CloudWatchとS3アクセスログを活用します。これにより、セキュリティインシデントの早期発見やパフォーマンスの最適化が可能です。

CloudWatchアラームの設定

CloudWatchを使用すると、S3バケットのアクセス数やリクエスト数などのメトリクスを監視できます。

  1. CloudWatchサービスを開き、「アラーム」を選択します。
  2. 「アラームを作成」をクリックします。
  3. 以下の手順でアラームを設定します:
    • メトリクスの名前空間として「AWS/S3」を選択します。
    • メトリクスとして「NumberOfObjects」や「BucketSizeBytes」などを選択します。
    • しきい値を設定し、アラームが発動する条件を定義します。
    • 通知先としてSNSトピックを設定します。

S3アクセスログの有効化

S3アクセスログを有効にすると、バケットへのアクセス履歴を記録できます。これにより、不正アクセスの検出やトラブルシューティングが容易になります。

  1. バケットを選択し、「プロパティ」タブを開きます。
  2. 「サーバーアクセスログ記録」セクションで「編集」をクリックします。
  3. 「ログ記録を有効にする」を選択し、ログを保存するバケットを指定します。
  4. 「保存」をクリックします。

モニタリングのベストプラクティス

  • 重要なバケットには必ずアクセスログを有効にします。
  • CloudWatchアラームを設定して、異常なアクセスパターンを検出します。
  • 定期的にログを分析し、セキュリティリスクを評価します。

応用テクニック:静的Webサイト・データ分析・CDN連携

S3は単なるストレージサービスにとどまらず、静的Webサイトのホスティング、データ分析、CDN連携など、さまざまな用途に活用できます。以下では、これらの応用テクニックを解説します。

S3を使った静的Webサイトのホスティング

この記事で学んだスキルをさらに深めたい方へ

AWS・クラウド技術をさらに深く学びたい方に。試験対策から実践まで網羅した参考書を活用しましょう。

Amazonアソシエイトプログラムを利用しています。

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