0Pricing
AWS Solutions Architect · レッスン

バケット、オブジェクト、リージョン

S3 バケットを作成してオブジェクトをアップロードし、キーの命名を理解して、S3 がリージョン内でデータを複製する仕組みを学びます。

「バケット、オブジェクト、リージョン」はCoddyKit上の無料AWS Solutions Architectレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Solutions Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Solutions Architectコースには全4レッスンが含まれています。

Amazon S3とは

Amazon Simple Storage Service(S3)は、インターネット上のあらゆる場所から、任意の量のデータを保存および取得できるように設計されたAWSのオブジェクトストレージサービスです。S3は、選択したリージョン内の複数のアベイラビリティーゾーンにある複数のデバイスへオブジェクトを冗長に保存することで、イレブンナインの耐久性(99.999999999%)を提供します。容量は無制限で、0バイトから最大5 TBまでのオブジェクトをサポートします。S3は、静的ウェブサイト、データレイク、バックアップリポジトリなど、数多くのAWSアーキテクチャを支える基盤です。

S3バケット:最上位のコンテナ

S3バケットは、グローバルで一意な名前を持つオブジェクト用のコンテナです。バケットは特定のAWSリージョンに作成しますが、名前は世界中のすべてのAWSアカウント間でグローバルに一意でなければなりません(名前がURLの一部になるためです)。バケット名は3~63文字で、英小文字を使用し、英字または数字で始める必要があります。また、アンダースコアや大文字は使用できません。ベストプラクティスとして、他のアカウントとの名前の衝突を避けるため、アカウントIDまたはランダムなサフィックスを含めてください。

# Create an S3 bucket in a specific region
aws s3api create-bucket \
  --bucket my-company-data-20240101 \
  --region us-west-2 \
  --create-bucket-configuration LocationConstraint=us-west-2

S3オブジェクトとキー

S3のオブジェクトは、データ(ファイルの内容)、キー(バケット内でのオブジェクトの一意な名前)、メタデータ(システム定義およびユーザー定義のキーと値のペア)、そしてオプションでバージョンID(バージョニングが有効な場合)から構成されます。キーは、photos/2024/summer/beach.jpgのような、パス形式に見える完全な文字列です。S3はフラットな構造であり、実際のディレクトリは存在せず、ディレクトリのように見えるキーのプレフィックスだけがあります。オブジェクトの最大サイズは5 TBです。100 MBを超えるオブジェクトには、パフォーマンスと信頼性を向上させるため、Multipart Uploadを使用してください。

# Upload an object
aws s3 cp ./report.pdf s3://my-company-data-20240101/reports/2024/report.pdf

# List objects with a specific prefix
aws s3 ls s3://my-company-data-20240101/reports/2024/

S3のURL形式

S3オブジェクトには2種類のURL形式でアクセスできます。パス形式:https://s3.<region>.amazonaws.com/<bucket>/<key>(新しいバケットでは廃止予定です)。仮想ホスト形式:https://<bucket>.s3.<region>.amazonaws.com/<key>(現在の標準形式です)。バケット名がサブドメインになるため、バケット名はDNSに準拠している必要があります。署名付きURLやCloudFrontディストリビューションでは、常に仮想ホスト形式が使用されます。URLの構造を理解すると、バケットポリシーとCORSを正しく設定しやすくなります。

# Generate a pre-signed URL valid for 1 hour (3600 seconds)
aws s3 presign s3://my-company-data-20240101/reports/2024/report.pdf \
  --expires-in 3600

S3のデータ整合性モデル

2020年12月以降、Amazon S3は、すべてのリージョンで、すべての操作(新しいオブジェクトのPUT、上書き、DELETE)に対して、追加料金なしで強いRead-after-Write整合性を自動的に提供しています。つまり、書き込みが成功すると、その後の読み取りでは常にオブジェクトの最新バージョンが返されます。これは以前の結果整合性モデルから大きく改善されたもので、書き込み後の読み取り遅延やリトライ処理が不要になり、アプリケーション設計が簡素化されます。

S3とリージョン:データレジデンシー

S3バケットを作成するときにリージョンを指定し、明示的にレプリケーションを設定しない限り、データはそのリージョンに留まります。AWSは耐久性を確保するため、そのリージョン内の複数のAZにデータをレプリケートしますが、データを別のリージョンへ自動的に移動することはありません。このリージョン単位のデータレジデンシーは、コンプライアンス上重要です。規制によってデータをEU内に保持する必要がある場合は、eu-west-1または別のEUリージョンにバケットを作成すれば、データがEU外へ移動することはありません。

# Find the region of an existing bucket
aws s3api get-bucket-location \
  --bucket my-company-data-20240101

大容量オブジェクトのMultipart Upload

Multipart Uploadは5 GBを超えるオブジェクトで必須であり、100 MBを超えるオブジェクトにも推奨されます。オブジェクトをパートに分割し(1パートあたり最小5 MB、最大10,000パート)、各パートを個別に並列アップロードして、最終的なオブジェクトに結合します。いずれかのパートで失敗しても、そのパートだけを再試行できます。大容量ファイルに対してaws s3 cpコマンドを使用すると、AWS CLIとSDKがMultipart Uploadを自動的に処理するため、手動で実装する必要はありません。

# The CLI uses multipart automatically for large files
aws s3 cp large-file-50GB.tar.gz s3://my-bucket/ \
  --storage-class STANDARD

# Or use s3api to control multipart manually
aws s3api create-multipart-upload \
  --bucket my-bucket \
  --key large-file-50GB.tar.gz

S3オブジェクトメタデータ

すべてのS3オブジェクトには、AWSが設定するシステムメタデータ(Content-Type、Content-Length、ETag、Last-Modified)と、オプションのユーザー定義メタデータ(x-amz-meta-をプレフィックスとするカスタムのキーと値のペア)があります。メタデータはオブジェクトとともに保存され、オブジェクトのダウンロード時にHTTPレスポンスヘッダーで返されます。Content-Typeはウェブ配信で特に重要です。Content-Type: text/htmlを設定せずにHTMLファイルをアップロードすると、ブラウザはそのファイルをレンダリングせず、ダウンロードとして扱う場合があります。

# Upload with explicit Content-Type metadata
aws s3 cp index.html s3://my-website-bucket/ \
  --content-type 'text/html' \
  --metadata 'author=alice,env=production'

静的ウェブサイトホスティングにおけるS3の利用

Amazon S3は静的ウェブサイトホストとして機能し、HTML、CSS、JavaScript、画像などのファイルをバケットから直接配信できます。バケットのプロパティで静的ウェブサイトホスティングを有効にし、インデックスドキュメント(index.html)と、必要に応じてエラードキュメント(404.html)を指定します。バケットのウェブサイトエンドポイントURLは、http://<bucket>.s3-website.<region>.amazonaws.comという形式です。HTTPSとカスタムドメインを利用するには、S3静的ウェブサイトバケットの前段にCloudFrontディストリビューションを配置します。

# Enable static website hosting
aws s3api put-bucket-website \
  --bucket my-website-bucket \
  --website-configuration '{"IndexDocument":{"Suffix":"index.html"},"ErrorDocument":{"Key":"404.html"}}'

S3 Transfer Acceleration

S3 Transfer Accelerationは、最寄りのCloudFrontエッジロケーションを経由してデータをルーティングし、その後AWSのプライベートバックボーンネットワークを通じてS3バケットのリージョンへ転送することで、長距離のオブジェクトアップロードを高速化します。S3エンドポイントへ直接アップロードする代わりに、クライアントはmy-bucket.s3-accelerate.amazonaws.comのようなアクセラレーションエンドポイントへアップロードします。Transfer AccelerationにはGB単位の少額の追加料金がかかりますが、バケットのリージョンから地理的に離れたユーザーのアップロード速度を大幅に向上できる場合があります。

# Enable Transfer Acceleration on a bucket
aws s3api put-bucket-accelerate-configuration \
  --bucket my-company-data-20240101 \
  --accelerate-configuration Status=Enabled

S3オブジェクトタグ付け

オブジェクトタグは、S3オブジェクトに付加して分類および管理するためのキーと値のペアです。タグは、ライフサイクルルール(特定のタグが付いたオブジェクトの移行または有効期限切れ)、アクセス制御(タグの値に対するIAMおよびバケットポリシーの条件)、コスト配分(Cost Explorerによるタグ別のS3支出の追跡)、インベントリと分析に使用されます。各オブジェクトには最大10個のタグを設定できます。タグはアップロード時に追加できるほか、オブジェクトデータ自体を変更せずに、オブジェクトの作成後に更新することもできます。

# Add tags to an existing object
aws s3api put-object-tagging \
  --bucket my-company-data-20240101 \
  --key reports/2024/report.pdf \
  --tagging '{"TagSet":[{"Key":"env","Value":"production"},{"Key":"owner","Value":"finance"}]}'

理解度チェック

このレッスンで学んだAWS Solutions Architect(SAA-C03)の概念について理解度を確認します。

レッスンのまとめ

このレッスンでは、S3バケットはグローバルで一意な名前を持ち、特定のリージョンに紐付けられたコンテナであること、オブジェクトはフラットなキー構造で保存され、メタデータとタグをサポートすること、そしてS3はマルチAZ冗長化によって強いRead-after-Write整合性とイレブンナインの耐久性を提供することを学びました。次は、バケットポリシーとACLを使用したS3アクセス制御について学びます。

よくある質問

「バケット、オブジェクト、リージョン」レッスンは無料ですか?

はい。「バケット、オブジェクト、リージョン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Solutions Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Solutions Architectコースには全4レッスンが含まれています。

「バケット、オブジェクト、リージョン」で何を学びますか?

S3 バケットを作成してオブジェクトをアップロードし、キーの命名を理解して、S3 がリージョン内でデータを複製する仕組みを学びます。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AWS Solutions Architectを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAWS Solutions Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「バケット、オブジェクト、リージョン」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAWS Solutions Architectレッスンでコードを書いて実行できますか?

はい。すべてのAWS Solutions Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. バケット、オブジェクト、リージョン
  2. S3 のアクセス制御:バケットポリシーと ACL
  3. バージョニング、MFA Delete、レプリケーション
  4. ストレージクラスとライフサイクルポリシー
← AWS Solutions Architectに戻る