Amazon S3 にデータ (写真、動画、ドキュメントなど) をアップロードするには、いずれかの AWS リージョン に S3 バケットを作成する必要があります。
Amazon S3 バケットには、汎用バケットとディレクトリバケットの 2 種類があります。アプリケーションとパフォーマンス要件に最適なバケットタイプを選択します。
-
汎用バケット はオリジナルの S3 バケットタイプであり、ほとんどのユースケースやアクセスパターンに推奨されます。汎用バケットでは、S3 Express One Zone 以外のすべてのストレージクラスにオブジェクトを保存することもできます。
-
ディレクトリバケットでは、S3 Express One Zone ストレージクラスを使用します。これは、アプリケーションがパフォーマンスの影響を受けやすく、1 桁ミリ秒の
PUT
とGET
のレイテンシーから利点が得られる場合にお勧めします。詳細については、「S3 Express One Zone」と「ディレクトリバケットの使用」を参照してください。
以下のセクションでは、バケットの命名規則、クォータ、バケット設定の詳細など、汎用バケットに関する詳細情報を提供します。Amazon S3 バケットに関連する制約と制限のリストについては、「バケットのクォータ、制限、制約」を参照してください。
汎用バケットの概要
汎用バケットとは、Amazon S3 に保存されているオブジェクトのコンテナです。バケットには任意の数のオブジェクトを保存でき、すべてのアカウントには 10,000 個の汎用バケットのデフォルトのバケットクォータがあります。バケット使用率やバケットクォータを確認したり、このクォータの引き上げをリクエストしたりするには、Service Quotas コンソール
-
商用リージョンの汎用バケットクォータは、米国東部 (バージニア北部) からのみ表示および管理できます。
-
AWS GovCloud (US) の汎用バケットクォータは、AWS GovCloud (米国西部) からのみ表示および管理できます。
すべてのオブジェクトはバケット内に保存されます。例えば、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 全般のリファレンスのリージョンとエンドポイントを参照してください。
注記
特定の AWS リージョン に作成したバケットに属するオブジェクトは、お客様が明示的に他のリージョンに転送しない限り、そのリージョンから移動しません。たとえば、欧州 (アイルランド) リージョンに保存されているオブジェクトは、ずっとそのリージョンに置かれたままです。
一般的なバケットパターン
Amazon S3 でアプリケーションを構築する場合、一意の汎用バケットを使用して、異なるデータセット間やワークロード間を分離できます。ユースケースに応じて、バケットを使用するためのさまざまな設計パターンやベストプラクティスがあります。詳細については、「Amazon S3 でアプリケーションを構築するための一般的なバケットパターン」を参照してください。
アクセス許可
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 を使用して静的ウェブサイトをホスティングする」を参照してください。 |
バケットオペレーション
Amazon S3 の高可用性技術は、get、put、list、および delete オペレーションに重点を置いています。バケットオペレーションは、一元化されたグローバルリソーススペースに対して実行されるため、アプリケーションの高可用性コードパスでバケットを作成、削除、または設定しないようお勧めします。バケットの作成、削除、設定は、個別の初期化や、頻繁に実行しないセットアップルーチンで実行する方が適しています。
バケットのパフォーマンスのモニタリング
AWS リソースに依存する重要なアプリケーションやビジネスプロセスがある場合は、システムをモニタリングしてアラートを取得することが重要です。データのモニタリングは、Amazon S3 とお客様の AWS ソリューションの信頼性、可用性、パフォーマンスを維持するのに役立ちます。S3 バケットのメトリクスとログを収集して集計するために使用できる AWS サービスがいくつかあります。
ユースケースに応じて、問題のデバッグ、データのモニタリング、ストレージコストの最適化、複数ポイントの問題のトラブルシューティングなど、組織のニーズに最適な AWS サービスを選択できます。例:
-
S3 を使用するアプリケーションのパフォーマンスを向上させるには: CloudWatch アラームを設定することで、ストレージデータ、レプリケーションメトリクス、またはリクエストメトリクスをモニタリングします。
-
ストレージの使用量を計画したり、ストレージコストを最適化したり、組織全体のストレージ容量を調べたりするには: Amazon S3 ストレージレンズを使用します。また、S3 ストレージレンズを使用してデータパフォーマンスを向上させることもできます。その場合は、高度なメトリクスを有効にし、詳細なステータスコードメトリクスを使用して、成功または失敗したリクエストの数を取得します。
-
運用状態の統合ビューを得るには: S3 ストレージレンズの使用状況とアクティビティのメトリクスを Amazon CloudWatch ダッシュボードに公開します。
注記
Amazon CloudWatch 公開オプションは、アドバンストメトリクスとレコメンデーションにアップグレードされた S3 ストレージレンズダッシュボードで利用できます。S3 Storage Lens の新規または既存のダッシュボード設定に対して CloudWatch 公開オプションを有効にできます。
-
ユーザー、ロール、または AWS サービスによって実行されたアクションの記録を取得するには: AWS CloudTrail ログを設定します。AWS CloudTrail ログを使用して、Amazon S3 への API コールをイベントとして確認することもできます。
-
S3 バケットで特定のイベントが発生したときに通知を受け取るには: Amazon S3 イベント通知を設定します。
-
S3 バケットに対して行われたリクエストの詳細なレコードを取得するには: S3 アクセスログを設定します。
データのモニタリングに使用できるさまざまな AWS サービスのリストについては、「Amazon S3 でのログ記録とモニタリング」を参照してください。