メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

Amazon S3 バケットの使用

Amazon S3 は、インターネット用のクラウドストレージです。データ(写真、動画、ドキュメントなど)をアップロードするには、いずれかの AWS リージョンにバケットを作成します。その後、バケットにオブジェクトをいくつでもアップロードできます。

実装の面では、バケットとオブジェクトはリソースであり、Amazon S3 はバケットやオブジェクトを管理するための API を提供します。たとえば、Amazon S3 API を使用してバケットの作成やオブジェクトのアップロードを行うことができます。これらの操作は Amazon S3 コンソールを使用して実行することもできます。コンソールは、内部で Amazon S3 API を使用して Amazon S3 にリクエストを送信します。

このセクションでは、バケットの操作方法について説明します。オブジェクトの操作方法の詳細については、「Amazon S3 オブジェクトの使用 」を参照してください。

Amazon S3 バケット名は、バケットを作成する AWS リージョンに関係なく、グローバルに一意です。バケット名はバケットを作成するときに指定します。バケットの命名のガイドラインについては、バケットの制約と制限 を参照してください。

Amazon S3 は、指定したリージョンでバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規制要件に対応するために、地理的に近い AWS リージョンを選択できます。たとえば、ヨーロッパにお住まいの場合は、欧州 (アイルランド) または 欧州 (フランクフルト) リージョンにバケットを作成するとよいでしょう。AWS Amazon S3 リージョンのリストについては、『AWS 全般リファレンス』の「リージョンとエンドポイント」を参照してください。

注記

特定の AWS リージョンに作成したバケットに属するオブジェクトは、お客様が明示的に他のリージョンに転送しない限り、そのリージョンから移動しません。たとえば、欧州 (アイルランド) リージョンに保存されたオブジェクトは、ずっとそのリージョンに置かれたままです。

バケットの作成

Amazon S3 では、バケットを作成および管理するための API を提供します。所有する各 AWS アカウントに対して最大 100 個のバケットを作成できます。バケットを作成するときに、バケットの名前とバケットを作成する AWS リージョンを指定します。次のセクション(「バケットへのアクセス」を参照)では、DNS 準拠のバケット名について説明します。

各バケットには、オブジェクトをいくつでも保存できます。以下のいずれかの方法でバケットを作成できます。

  • コンソールを使用してバケットを作成します。

  • プログラムで AWS SDK を使用してバケットを作成します。

    注記

    必要に応じて、コードから直接 Amazon S3 REST API を呼び出すこともできます。ただし、この方法は、リクエストを認証するためのコードを作成する必要があるため面倒な場合もあります。詳細については、『Amazon Simple Storage Service API Reference』の「PUT Bucket」を参照してください。

    AWS SDK を使用する場合は、最初にクライアントを作成し、クライアントを使用してバケットを作成するリクエストを送信します。クライアントを作成するときに、AWS のリージョンを指定できます(米国スタンダードがデフォルトのリージョンです)。また、バケット作成リクエストでリージョンを指定することもできます。次の点に注意してください。

    • 米国スタンダードリージョンを指定してクライアントを作成する場合、Amazon S3 と通信するために次のエンドポイントが使用されます。

      Copy
      s3.amazonaws.com

      このクライアントを使用して、任意の AWS リージョンでバケットを作成できます。バケット作成リクエストで、

      • リージョンを指定しない場合、Amazon S3 は米国スタンダードリージョンにバケットを作成します。

      • AWS リージョンを指定した場合、Amazon S3 は指定されたリージョンにバケットを作成します。

    • 他の AWS のリージョン指定することによってクライアントを作成する場合、これらのリージョンはそれぞれ、リージョン固有エンドポイントにマッピングされます。

      Copy
      s3-<region>.amazonaws.com

      たとえば、eu-west-1 リージョンを指定してクライアントを作成する場合、次のリージョン固有エンドポイントにマッピングされます。

      Copy
      s3-eu-west-1.amazonaws.com

      この場合、クライアントを使用して eu-west-1 リージョンにのみバケットを作成できます。バケット作成リクエストで他のリージョンを指定すると、Amazon S3 はエラーを返します。

    利用可能な AWS リージョンのリストについては、『AWS 全般リファレンス』の「リージョンとエンドポイント」を参照してください。

例については、「バケットを作成する例」を参照してください。

アクセス許可について

AWS アカウントのルート認証情報を使用して、バケットを作成したり、その他の Amazon S3 オペレーションを実行したりすることができます。ただし、AWS では、バケットの作成などのリクエストの実行に、AWS アカウントのルート認証情報を使用しないことをお勧めします。代わりに、IAM ユーザーを作成し、そのユーザーにフルアクセスを許可します(デフォルトではユーザーにアクセス許可はありません)。このようなユーザーを管理者ユーザーと呼びます。アカウントのルート認証情報ではなく、管理者ユーザーの認証情報を使用して、AWS を操作し、バケットの作成、ユーザーの作成、およびアクセス許可の付与などのタスクを実行できます。

詳細については、『AWS 全般リファレンス』の「ルートアカウント認証情報と IAM ユーザー認証情報」および『IAM の使用』の「IAM ベストプラクティス」を参照してください。

リソースを作成する AWS アカウントは、そのリソースを所有しています。たとえば、AWS アカウントに IAM ユーザーを作成し、そのユーザーにバケットを作成するアクセス許可を付与すると、ユーザーはバケットを作成できます。しかし、ユーザーはバケットを所有していません。ユーザーが属する AWS アカウントがバケットを所有しています。ユーザーがその他のバケットオペレーションを実行するには、リソース所有者から追加のアクセス許可を取得する必要があります。Amazon S3 リソースのアクセス許可を管理する方法の詳細については、「Amazon S3 リソースへのアクセス許可の管理」を参照してください。

バケットへのアクセス

Amazon S3 コンソールを使用してバケットにアクセスできます。コンソール UI を使用して、コードを記述することなく、ほぼすべてのバケットオペレーションを実行できます。

プログラムでバケットにアクセスする場合、Amazon S3 は RESTful アーキテクチャをサポートしていることに注意してください。このアーキテクチャでは、バケットやオブジェクトはリソースであり、それぞれリソースを一意に識別するリソース URI を持ちます。

Amazon S3 では、仮想ホスト形式の URL とパス形式の URL の両方でバケットにアクセスできます。

  • 仮想ホスト形式の URL では、バケット名は URL のドメイン名の一部です。例:  

    • http://bucket.s3.amazonaws.com

    • http://bucket.s3-aws-region.amazonaws.com.

    仮想ホスト形式の URL では、これらのエンドポイントのいずれかを使用できます。http://bucket.s3.amazonaws.com エンドポイントに対してリクエストを実行する場合、DNS には、バケットが存在するリージョンに直接リクエストをルーティングするのに十分な情報があります。

  • パス形式の URL では、バケット名は(リージョン固有のエンドポイントを使用しない限り)ドメインの一部にはなりません。(例:

    • 米国スタンダードエンドポイント、http://s3.amazonaws.com/bucket

    • リージョン固有のエンドポイント、http://s3-aws-region.amazonaws.com/bucket

    パス形式の URL では、使用するエンドポイントはバケットが存在するリージョンと一致している必要があります。たとえば、バケットが 南米 (サンパウロ) リージョンにある場合は、http://s3-sa-east-1.amazonaws.com/bucket エンドポイントを使用する必要があります。バケットが米国スタンダードリージョンにある場合は、http://s3.amazonaws.com/bucket エンドポイントを使用する必要があります。

重要

バケットはパス形式の URL と仮想ホスト形式の URL を使用してアクセスできるため、DNS 準拠のバケット名を使用してバケットを作成することをお勧めします。詳細については、「バケットの制約と制限」を参照してください。

詳細については、「バケットの仮想ホスティング」を参照してください。

バケット設定オプション

Amazon S3 では、バケットを設定するためのさまざまなオプションをサポートしています。たとえば、バケットをウェブサイトのホスティング用に設定する、バケット内のオブジェクトのライフサイクルを管理するための設定を追加する、およびバケットへのアクセスをすべて記録するようにバケットを設定することができます。Amazon S3 では、バケットの設定情報を保存および管理するためのサブリソースをサポートしています。つまり、Amazon S3 API を使用して、これらのサブリソースを作成、管理できます。コンソールや AWS SDK を使用することもできます。

注記

また、オブジェクトレベルの設定もあります。たとえば、オブジェクトに固有のアクセスコントロールリスト(ACL)を設定することによって、オブジェクトレベルのアクセス許可を設定できます。

これらは、特定のバケットやオブジェクトのコンテキストに存在するため、サブリソースと呼ばれます。次の表に、バケット固有の設定を管理するためのサブリソースのリストを示します。

サブリソース 説明
ライフサイクル

バケットのライフサイクルが明確に定義されていれば、バケット内のオブジェクトのライフサイクルルールを定義できます。たとえば、作成されてから 1 年後にオブジェクトアーカイブする、作成されてから 10 年後にオブジェクトを削除するなどのルールを定義できます。

詳細については、「オブジェクトのライフサイクル管理」を参照してください。

website

静的ウェブサイトホスティング用にバケットを設定できます。Amazon S3 では、website サブリソースを作成することによって、この設定を格納します。

詳細については、「Amazon S3 での静的ウェブサイトのホスティング」を参照してください。

バージョニング

バージョニングは、誤って上書き、削除した場合の回復に役立ちます。

誤って削除または上書きされたオブジェクトを回復するためのベストプラクティスとしてバージョニングをお勧めします。

詳細については、「バージョニングの使用」を参照してください。

policy および ACL(アクセスコントロールリスト)

すべてのリソース(バケットやオブジェクトなど)はデフォルトではプライベートです。Amazon S3 では、バケットレベルのアクセス許可を付与および管理するために、バケットポリシーおよびアクセスコントロールリスト(ACL)の両方のオプションをサポートしています。Amazon S3 では、policy および acl サブリソースにアクセス許可情報を格納します。

詳細については、「Amazon S3 リソースへのアクセス許可の管理」を参照してください。

cors(Cross-Origin Resource Sharing)

クロスオリジンリクエストを許可するようにバケットを設定できます。

詳細については、「Cross-Origin Resource Sharing の有効化」を参照してください。

logging

ログ記録によって、バケットへのアクセスのリクエストを追跡できます。各アクセスログレコードには、1 つのアクセスリクエストに関する詳細が含まれます。内容は、リクエスタ、バケット名、リクエスト時刻、リクエストアクション、応答ステータス、およびエラーコード(存在する場合)です。アクセスログ情報は、セキュリティとアクセス監査に役立ちます。また、顧客基盤について知り、Amazon S3 の請求を理解することにも役立ちます。 

詳細については、「サーバーアクセスのロギング」を参照してください。

タグ付け

バケットにコスト配分タグを追加して、AWS コストを分類して追跡できます。Amazon S3 では、バケットのタグを保存、管理するために、tagging サブリソースを提供しています。タグを使用してバケットに適用すると、AWS によって、使用率とコストがタグごとに集計されたコスト配分レポートが生成されます。

詳細については、「バケットの請求とレポート」を参照してください。

location

バケットを作成するときには、Amazon S3 でバケットを作成する AWS リージョンを指定します。Amazon S3 では、この情報を location サブリソースに格納し、この情報を取得するための API をお客様に提供します。

通知

指定したバケットイベントの通知を送信するようにバケットを設定できます。

詳細については、「 Amazon S3 イベント通知の設定」を参照してください。

versions

Amazon S3 は、オブジェクトのバージョン情報をこのサブリソースに格納します。

requestPayment

デフォルトでは、バケットを作成した AWS アカウント(バケット所有者)に、バケットからのダウンロードの料金をお支払いいただきます。バケット所有者は、このサブリソースを使用して、ダウンロードをリクエストするユーザーにダウンロードの料金が課金されるように指定できます。Amazon S3 は、このサブリソースを管理するための API も提供します。

詳細については、「リクエスタ支払いバケット」を参照してください。