バケットの概要
Amazon S3 にデータ (写真、動画、ドキュメントなど) をアップロードするには、いずれかの AWS リージョン に S3 バケットを作成する必要があります。
バケットとは、Amazon S3 に保存されるオブジェクトのコンテナです。バケットにはオブジェクトをいくつでも保存でき、アカウントにはバケットを 100 個まで保存できます。バケット使用率やバケットクォータを確認したり、引き上げをリクエストしたりするには、Service Quotas コンソール
Amazon S3 バケットに関連する制約と制限のリストについては、「バケットのクォータ、制約、および制限」を参照してください。
すべてのオブジェクトはバケット内に保存されます。例えば、photos/puppy.jpg
という名前のオブジェクトが米国西部 (オレゴン) リージョンにある amzn-s3-demo-bucket
バケットに保存される場合、URL https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/photos/puppy.jpg
を使用してアドレスを解決できます。詳細については、「バケットへのアクセス」を参照してください。
実装の面では、バケットとオブジェクトは AWS リソースであり、Amazon S3 はバケットやオブジェクトを管理するための API を提供します。たとえば、Amazon S3 API を使用してバケットの作成やオブジェクトのアップロードを行うことができます。これらの操作は Amazon S3 コンソールを使用して実行することもできます。コンソールは、Amazon S3 API を使用して Amazon S3 にリクエストを送信します。
このセクションでは、バケットを操作する方法について説明します。オブジェクトの操作方法の詳細については、「Amazon S3 オブジェクトの概要」を参照してください。
Amazon S3 はグローバルバケットをサポートしています。つまり、各バケット名が、パーティション内のすべての AWS リージョン のすべての AWS アカウント で一意である必要があることを意味します。パーティションは、リージョンのグループであり、AWS には、現在、aws
(標準リージョン)、aws-cn
(中国リージョン)、および aws-us-gov
(AWS GovCloud (US)) の 3 つのパーティションがあります。
バケットが作成された後は、バケットが削除されるまで、同じパーティションの別の AWS アカウント でそのバケットの名前を使用することはできません。可用性やセキュリティ検証の目的で、特定のバケット命名規則に依存しないでください。バケットの命名のガイドラインについては、バケットの名前付け を参照してください。
Amazon S3 は、指定したリージョンでバケットを作成します。レイテンシーを減らしてコストを最小化し、規制要件に対応するには、地理的に近い AWS リージョン を選択します。たとえば、ヨーロッパにお住まいの場合は、欧州 (アイルランド) または欧州 (フランクフルト) リージョンにバケットを作成するとよいでしょう。Amazon S3 のリージョンの一覧については、AWS 全般のリファレンスのリージョンとエンドポイントを参照してください。
注記
Amazon S3 Express One Zone ストレージクラスをディレクトリバケットで使用する方法の詳細については、「ディレクトリバケットと S3 Express One Zone」と「ディレクトリバケットの概要」を参照してください。
注記
特定の AWS リージョン に作成したバケットに属するオブジェクトは、お客様が明示的に他のリージョンに転送しない限り、そのリージョンから移動しません。たとえば、欧州 (アイルランド) リージョンに保存されているオブジェクトは、ずっとそのリージョンに置かれたままです。
アクセス許可について
AWS アカウントのルートユーザーの認証情報を使用して、バケットを作成したり、その他の Amazon S3 オペレーションを実行したりできます。ただし、バケット作成などのリクエストを行う目的で AWS アカウント のルートユーザーの認証情報を使用しないことをお勧めします。代わりに、AWS Identity and Access Management (IAM) ユーザーを作成し、そのユーザーにフルアクセスを許可します (デフォルトではユーザーにアクセス許可はありません)。
これらのユーザーは、管理者と呼ばれます。アカウントのルートユーザーの認証情報ではなく、管理者ユーザーの認証情報を使用して、AWS を操作し、バケットの作成、ユーザーの作成、および許可の付与などのタスクを実行できます。
詳細については、AWS 全般のリファレンスの「AWS アカウントのルートユーザー認証情報と IAM ユーザー認証情報」と IAM ユーザーガイドの「IAM でのセキュリティのベストプラクティス」を参照してください。
リソースを作成する AWS アカウント は、そのリソースを所有しています。例えば、AWS アカウント に IAM ユーザーを作成し、そのユーザーにバケットを作成する許可を付与すると、ユーザーはバケットを作成できます。しかし、ユーザーはバケットを所有していません。ユーザーが属する AWS アカウント がバケットを所有しています。ユーザーがその他のバケットオペレーションを実行するには、リソース所有者から追加のアクセス許可を取得する必要があります。Amazon S3 リソースのアクセス許可を管理する方法の詳細については、「Amazon S3 用 Identity and Access Management」を参照してください。
バケットへのパブリックアクセスを管理する
パブリックアクセスは、アクセスコントロールリスト (ACL)、バケットポリシー、またはその両方からバケットおよびオブジェクトに付与されます。Amazon S3 には、パブリックアクセスをブロックする設定があり、Amazon S3 リソースへのパブリックアクセスを管理するのに役立ちます。Amazon S3 Block Public Access 設定では ACL およびバケットポリシーを上書きできるため、これらのリソースへのパブリックアクセスに均一な制限を適用できます。Block Public Access 設定は、個々のバケットまたはアカウント内のすべてのバケットに適用できます。
すべての Amazon S3 バケットとオブジェクトのパブリックアクセスを確実にブロックするように、バケットを作成するときは、デフォルトで 4 つすべての [パブリックアクセスをブロック] 設定が有効になっています。アカウントに対して [パブリックアクセスをブロック] の 4 つの設定をすべてオンにすることをお勧めします。これらの設定によって、現在および将来のバケットのパブリックアクセスはすべてブロックされます。
これらの設定を適用する前に、アプリケーションがパブリックアクセスなしで正しく動作することを確認してください。「Amazon S3 を使用して静的ウェブサイトをホスティングする」に示す静的なウェブサイトをホストする場合など、バケットやオブジェクトにある程度のパブリックアクセスが必要な場合は、ストレージのユースケースに合わせて個別に設定をカスタマイズできます。詳細については、「Amazon S3 ストレージへのパブリックアクセスのブロック」を参照してください。
ただし、[パブリックアクセスをブロック] 設定は、有効にしておくことを強くお勧めします。4 つすべての [パブリックアクセスをブロック] 設定を有効にしたまま、静的ウェブサイトをホストする場合は、Amazon CloudFront のオリジンアクセスコントロール (OAC) を使用できます。Amazon CloudFront は、セキュアな静的ウェブサイトをセットアップするために必要な機能を提供します。Amazon S3 静的ウェブサイトは、HTTP エンドポイントのみをサポートしています。Amazon CloudFront は、耐久性に優れた Amazon S3 のあるストレージを使用し、HTTPS などの、追加のセキュリティヘッダーを提供します。HTTPS では、通常の HTTP リクエストを暗号化し、一般的なサイバー攻撃から保護することで、セキュリティが強化されます。
詳細については、「Amazon CloudFront デベロッパーガイド」の「安全な静的ウェブサイトの使用開始」を参照してください。
注記
バケットとそのパブリックアクセス設定を一覧表示したときに Error
が表示された場合は、必要なアクセス許可がない可能性があります。以下のアクセス許可がユーザーポリシーまたはロールポリシーに追加されていることを確認します。
s3:GetAccountPublicAccessBlock s3:GetBucketPublicAccessBlock s3:GetBucketPolicyStatus s3:GetBucketLocation s3:GetBucketAcl s3:ListAccessPoints s3:ListAllMyBuckets
まれに、AWS リージョンの停止が原因で、リクエストが失敗することもあります。
バケット設定オプション
Amazon S3 では、バケットを設定するためのさまざまなオプションをサポートしています。たとえば、バケットをウェブサイトのホスティング用に設定する、バケット内のオブジェクトのライフサイクルを管理するための設定を追加する、およびバケットへのアクセスをすべて記録するようにバケットを設定することができます。Amazon S3 では、バケットの設定情報を保存および管理するためのサブリソースをサポートしています。Amazon S3 API を使用して、これらのサブリソースを作成および管理できます。ただし、コンソールや AWS SDK を使用することもできます。
注記
また、オブジェクトレベルの設定もあります。たとえば、オブジェクトに固有のアクセスコントロールリスト (ACL) を設定することによって、オブジェクトレベルのアクセス許可を設定できます。
これらは、特定のバケットやオブジェクトのコンテキストに存在するため、サブリソースと呼ばれます。次の表に、バケット固有の設定を管理するためのサブリソースのリストを示します。
サブリソース | 説明 |
---|---|
cors (Cross-Origin Resource Sharing) |
クロスオリジンリクエストを許可するようにバケットを設定できます。 詳細については、「Cross−Origin Resource Sharing (CORS) の使用」を参照してください。 |
イベントの通知 |
指定したバケットイベントの通知を送信するようにバケットを設定できます。 詳細については、「Amazon S3 イベント通知」を参照してください。 |
ライフサイクル |
バケットのライフサイクルが明確に定義されていれば、バケット内のオブジェクトのライフサイクルルールを定義できます。たとえば、作成されてから 1 年後にオブジェクトアーカイブする、作成されてから 10 年後にオブジェクトを削除するなどのルールを定義できます。 詳細については、「オブジェクトのライフサイクルの管理」を参照してください。 |
location |
バケットを作成するときには、Amazon S3 でバケットを作成する AWS リージョン を指定します。Amazon S3 では、この情報を location サブリソースに格納し、この情報を取得するための API をお客様に提供します。 |
logging |
ログ記録によって、バケットへのアクセスのリクエストを追跡できます。各アクセスログレコードには、1 つのアクセスリクエストに関する詳細が含まれます。内容は、リクエスタ、バケット名、リクエスト時刻、リクエストアクション、応答ステータス、およびエラーコード (存在する場合) です。アクセスログ情報は、セキュリティとアクセス監査に役立ちます。また、顧客基盤について知り、Amazon S3 の請求を理解することにも役立ちます。 詳細については、「サーバーアクセスログによるリクエストのログ記録」を参照してください。 |
オブジェクトのロック |
S3 のオブジェクトのロックを使用するには、バケットに対して有効にする必要があります。オプションで、バケットに配置された新しいオブジェクトに適用されるデフォルトのリテンションモードと期間を設定することもできます。 詳細については、「S3 Object Lock を使用したオブジェクトのロック」を参照してください。 |
policy および ACL (アクセスコントロールリスト) |
すべてのリソース (バケットやオブジェクトなど) はデフォルトではプライベートです。Amazon S3 では、バケットレベルのアクセス許可を付与および管理するために、バケットポリシーおよびアクセスコントロールリスト (ACL)の両方のオプションをサポートしています。Amazon S3 では、policy および acl サブリソースにアクセス許可情報を格納します。 詳細については、「Amazon S3 用 Identity and Access Management」を参照してください。 |
レプリケーション |
レプリケーションは、同一または異なる AWS リージョン にあるバケット間でオブジェクトを自動的に非同期コピーする機能です。詳細については、「リージョン内およびリージョン間でのオブジェクトのレプリケート」を参照してください。 |
requestPayment |
デフォルトでは、バケットを作成した AWS アカウント (バケット所有者) に、バケットからのダウンロードの料金をお支払いいただきます。バケット所有者は、このサブリソースを使用して、ダウンロードをリクエストするユーザーにダウンロードの料金が課金されるように指定できます。Amazon S3 では、このサブリソースを管理するための API も利用できます。 詳細については、「ストレージ転送と使用量のリクエスタ支払いバケットの使用」を参照してください。 |
タグ付け |
バケットにコスト配分タグを追加して、AWS コストを分類して追跡できます。Amazon S3 では、バケットのタグを保存、管理するために、tagging サブリソースを提供しています。タグを使用してバケットに適用すると、AWS によって、使用量とコストがタグごとに集計されたコスト配分レポートが生成されます。 詳細については、「Amazon S3 の請求および使用状況レポート」を参照してください。 |
Transfer Acceleration |
Transfer Acceleration を使用すると、クライアントと S3 バケットの間で、長距離にわたるファイル転送を高速、簡単、安全に行えるようになります。Transfer Acceleration は、Amazon CloudFront の世界中に点在するエッジロケーションを利用します。 詳細については、「Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定」を参照してください。 |
バージョニング |
バージョニングは、誤って上書き、削除した場合の回復に役立ちます。 誤って削除または上書きされたオブジェクトを回復するためのベストプラクティスとしてバージョニングをお勧めします。 詳細については、「S3 バージョニングによる複数のバージョンのオブジェクトの保持」を参照してください。 |
website |
静的ウェブサイトホスティング用にバケットを設定できます。Amazon S3 では、website サブリソースを作成することによって、この設定を格納します。 詳細については、「Amazon S3 を使用して静的ウェブサイトをホスティングする」を参照してください。 |