0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS解説 S3編 #1】S3とは?バケットとオブジェクトの違いを整理

0
Posted at

【AWS解説 S3編 #1】S3とは?バケットとオブジェクトの違いを整理

S3編 #1(全7回予定)

AWSを学び始めると、EC2やLambdaと並んで、S3(Amazon Simple Storage Service)という名前をよく見かけます。

S3が「ファイルを保存するサービス」であることは分かっても、最初は次のような疑問が出てきます。

バケットとオブジェクトは何が違うのか
コンソールでは、最初に何を作ればよいのか
アップロードしたファイルはどこから確認するのか

この記事では、S3の基本的な考え方を整理したうえで、AWSマネジメントコンソールからバケットを1つ作成し、ファイルをアップロードして、最後に削除するところまでを進めます。

複雑な公開設定や権限設定はまだ扱いません。まずは、S3の基本操作を一通り体験することを目標にします。


この記事で分かること

  • S3がどのような用途で使われるストレージか
  • バケット、オブジェクト、キーの違い
  • コンソールでの基本操作
    • バケットの作成
    • ファイルのアップロード
    • アップロード結果の確認
    • オブジェクトとバケットの削除
  • 初学者がつまずきやすいポイント

S3とは?バケットとオブジェクトの関係

s3-service-explanation.png

Amazon S3は、AWSが提供するオブジェクトストレージです。

画像、PDF、テキストファイル、ログ、バックアップなどのデータを、1つずつオブジェクトとして保存します。

身近なイメージでは、S3は「AWS上に用意するファイルの保存場所」に近いサービスです。

例えば、次のような用途で使われます。

  • Webサイトで表示する画像や動画の保存
  • アプリケーションから出力したファイルの保存
  • ログファイルの長期保存
  • バックアップデータの保存
  • データ分析に使用するファイルの保存

S3を理解するために、まずは次の3つの用語を押さえておきます。

用語 意味
バケット(Bucket) オブジェクトを保存する最上位の入れ物。S3を使うときに最初に作成する
オブジェクト(Object) バケット内に保存されるデータ。ファイル本体と、そのデータに関する情報を持つ
キー(Key) バケット内でオブジェクトを識別する名前

簡単に整理すると、バケットはデータを保存する入れ物で、オブジェクトはその中に保存されるデータです。
パソコンの操作に例えると、バケットはファイルを管理するための最上位の保存場所、オブジェクトはそこに保存する1つ1つのファイルに近い存在です。

例えば、sample.txt というファイルをアップロードした場合、S3上ではそのデータがオブジェクトとして保存され、sample.txt がオブジェクトキーになります。

s3-bucket-object-overview.png

S3の「フォルダ」はどのような仕組みか

S3のコンソールでは、通常のファイル管理画面と同じようにフォルダを作成できます。

ただし、S3の内部では、パソコンのファイルシステムと同じ構造でフォルダが保存されているわけではありません。

例えば、次のようなキーを持つオブジェクトがあるとします。

images/logo.png

コンソール上では images フォルダの中に logo.png があるように表示されますが、S3では images/logo.png というキーを持つオブジェクトとして管理されます。

最初の段階では、次のように覚えておけば十分です。

  • バケット:S3上の最上位の入れ物
  • オブジェクト:保存するデータ
  • キー:オブジェクトを識別する名前

S3が向いている用途・向いていない用途

S3は、次のような用途に向いています。

  • 画像やドキュメントなど、ファイルそのものを保存したい
  • Webサイトやアプリケーションから、ファイルを読み書きしたい
  • ログやバックアップを、保存量の増加に合わせて保管したい
  • サーバーのディスク容量を意識せず、保存場所をAWS側に任せたい

一方で、次のような用途では、別のサービスを検討します。

  • 表形式のデータを、行や項目ごとに検索・更新したい
    • Amazon RDSやAmazon DynamoDBなどを検討する
  • EC2のOSやアプリケーションから、通常のディスクとして低遅延で頻繁に読み書きしたい
    • Amazon EBSなどを検討する

S3とEBS、RDSなどは、同じ「データを保存するサービス」でも役割が異なります。

最初は、画像、ドキュメント、ログ、バックアップなどのファイルを保存したいときはS3を候補にすると覚えておけば問題ありません。


コンソールでバケットを作ってみる

ここまで整理したバケットとオブジェクトの関係を、AWSマネジメントコンソールで実際に確認します。
今回は、バケットを1つ作成し、その中へファイルをアップロードして、オブジェクトとして保存されるところまで進めます。

前提

  • AWSアカウントを持っていること
  • AWSマネジメントコンソールにログインできること
  • 本記事の操作は学習用として行うこと
  • 検証後は作成したオブジェクトとバケットを削除すること

今回使用するリージョン

この記事では、次のリージョンにバケットを作成します。

  • アジアパシフィック(東京)ap-northeast-1

S3のバケット名は、自分のAWSアカウント内だけでなく、ほかの利用者が作成したバケットとも重複しない名前を指定する必要があります。


1. S3の画面を開く

  1. AWSマネジメントコンソールにログインする
  2. 画面上部の検索欄に S3 と入力する
  3. 検索結果から S3 を選択する
  4. S3の画面で、バケット一覧を開く

s3-#1-scr1.png

リージョンは、次のバケット作成画面で指定します。


2. バケットを作成する

s3-#1-scr2.png

  1. バケットを作成 をクリックする
  2. バケット名に、ほかの利用者と重複しない名前を入力する
  3. AWSリージョンで、アジアパシフィック(東京)ap-northeast-1 を選択する
  4. そのほかの設定は、今回はデフォルトのまま進める
  5. 画面下部の バケットを作成 をクリックする

バケット名は、用途が分かる文字列と、重複を避けるための任意の数字などを組み合わせると管理しやすくなります。

例えば、次のような形式にできます。

s3-用途を表す名前-任意の数字

今回の学習用バケットであれば、次のような名前が一例です。

s3-sampledemo-202607

この形式にする必要があるわけではありません。バケットの用途が分かり、ほかの利用者が使用している名前と重複しなければ、任意の名前を指定できます。

すでに同じ名前が使用されている場合は、末尾の数字や文字列を変更してみてください。

また、バケット名はURLなどに含まれることがあるため、公開されると困る情報は含めないようにします。

例えば、次のような情報は避けた方が安全です。

  • メールアドレス
  • AWSアカウントID
  • 本名などの個人情報
  • 社外へ公開できないプロジェクト名

s3-#1-scr3.png

Block Public Accessは有効のままにする

バケット作成画面には、Block Public Accessパブリックアクセスをすべてブロック)に関する設定があります。

今回は、すべてのパブリックアクセスをブロックする設定を有効にしたまま進めます。

今回のオブジェクトには一般公開を許可する設定を行っていないため、オブジェクトURLをブラウザで開いても表示できません。
また、Block Public Accessも有効にしているため、公開を許可するバケットポリシーやACLの設定がブロックされています。
Block Public Accessを無効にするだけで、オブジェクトが自動的に公開されるわけではありません。

Block Public Accessやバケットポリシーについては、後の記事で改めて扱います。
s3-#1-scr4.png


3. ファイルをアップロードする

バケットを作成できたら、手元のファイルを1つアップロードします。

s3-#1-scr5.png

  1. 作成したバケット名をクリックする
  2. バケット内の画面で アップロード をクリックする
  3. ファイルを追加 をクリックする
  4. 手元のテキストファイルや画像ファイルを1つ選択する
  5. 画面下部の アップロード をクリックする

今回は、例として次のようなテキストファイルを使用します。

sample.txt

sample.txt の内容は、次のような簡単な文章で問題ありません。

sample_text

s3-#1-scr6.png

アップロードが完了すると、成功したことを示す画面が表示されます。


4. アップロード結果を確認する

  1. バケット内のオブジェクト一覧へ戻る
  2. 先ほどアップロードしたファイル名が表示されていることを確認する
  3. オブジェクト名をクリックする
  4. オブジェクトの詳細画面で、サイズや最終更新日時などを確認する

ここまでで、次のS3基本操作を一通り体験できました。

バケットを作成する
    ↓
ファイルをアップロードする
    ↓
オブジェクトとして保存されたことを確認する

初学者がつまずきやすいポイント

バケット名がすでに使用されている

S3のバケット名は、自分のAWSアカウント内だけでなく、ほかの利用者が作成したバケットとも重複しない名前にする必要があります。

test-bucketsample-bucket のような一般的な名前は、すでに使用されている可能性があります。

バケットを作成できない場合は、他と重複しないような名称に変更してください。

ただし、メールアドレスやAWSアカウントIDなどの情報は含めないようにします。


作成するリージョンを間違えた

S3バケットは、作成時に選択したリージョンに配置されます。

東京リージョンに作成する場合は、バケット作成画面のAWSリージョンで、次の項目が選択されていることを確認します。

アジアパシフィック(東京) ap-northeast-1

作成後にリージョンを変更することはできないため、間違えた場合は新しいバケットを作り直します。


アップロードしたファイルが見つからない

アップロードしたファイルが一覧に表示されない場合は、次の点を確認します。

  • アップロード先と同じバケットを開いているか
  • バケット内の別のフォルダを開いていないか
  • アップロード処理が成功しているか
  • オブジェクト一覧を再読み込みしたか

例えば、images フォルダを開いた状態でファイルをアップロードすると、オブジェクトキーは次のようになります。

images/sample.txt

この場合、バケットの一番上の階層ではなく、images フォルダ内に表示されます。


オブジェクトURLを開いてもファイルが表示されない

今回作成したバケットでは、Block Public Accessを有効にしています。

そのため、オブジェクトのURLをブラウザへ直接入力しても、インターネット上の誰でも参照できる状態にはなっていません。

これはエラーではなく、公開アクセスがブロックされているためです。

S3のオブジェクトをWeb上へ公開する方法や、安全な配信方法については、後の記事で扱います。


料金が発生しないか

S3では、主に次の内容に応じて料金が発生します。

  • 保存しているデータ量
  • オブジェクトへのリクエスト数
  • データ転送量
  • 使用するストレージクラスや追加機能

今回のように小さなファイルを1つアップロードするだけであれば、通常は大きな金額にはなりません。

ただし、料金体系や無料利用枠は変更される可能性があります。利用前に、AWS公式の料金ページを確認してください。

学習後に不要なリソースを削除する習慣も付けておくと安心です。


学習用リソースを削除する

確認が終わったら、今回作成したオブジェクトとバケットを削除します。

S3バケットを削除するには、先にバケット内を空にする必要があります。

1. オブジェクトを削除する

  1. 作成したバケットを開く
  2. オブジェクト一覧で、削除するオブジェクトにチェックを入れる
  3. 削除 をクリックする
  4. 確認画面の案内に従って削除を実行する
  5. オブジェクト一覧からファイルが消えたことを確認する

s3-#1-scr7.png

複数のオブジェクトを作成した場合は、バケットを空にする操作を使用する方法もあります。


2. バケットを削除する

  1. S3のバケット一覧へ戻る
  2. 削除するバケットを選択する
  3. 削除 をクリックする
  4. 確認画面で、指定された内容を入力する
  5. バケットの削除を実行する

s3-#1-scr8.png

s3-#1-scr9.png

バケット内にオブジェクトが残っていると、バケットを削除できません。

削除できない場合は、バケット内にファイルやフォルダが残っていないかを確認してください。

今回はバージョニングを有効にしていない前提です。バージョニングを有効にしたバケットでは、過去のバージョンや削除マーカーも含めて削除する必要があります。詳しくはS3編 #2で扱います。


まとめ

Amazon S3は、画像、ドキュメント、ログ、バックアップなどのデータを、オブジェクトとして保存するストレージサービスです。

S3を使うときは、まずバケットを作成し、その中にオブジェクトを保存します。各オブジェクトは、キーによって識別されます。

この記事では、AWSマネジメントコンソールを使って、次の操作を行いました。

  1. 東京リージョンにS3バケットを作成する
  2. ファイルを1つアップロードする
  3. オブジェクトの情報を確認する
  4. オブジェクトとバケットを削除する

これで、S3を初めて操作するときの基本的な流れは完了です。

公開設定、アクセス権限、暗号化、バージョニングなどは、次回以降の記事で段階的に扱います。


次回

次回は、S3のバージョニングを扱います。

バージョニングを有効にすると、ファイルを誤って上書きした場合や削除した場合でも、過去の状態へ戻せるようになります。


S3をCloudFormationで作成する場合

今回は、AWSマネジメントコンソールからS3バケットを作成しました。

AWSには、バケット名や暗号化、バージョニングなどの設定をYAML形式のテンプレートに記述し、AWSリソースを作成・管理できるCloudFormationというサービスもあります。

個人開発しているIaCraftStudioでは、画面からS3の設定を選択すると、その内容を反映したCloudFormation YAMLを生成できます。

今回のコンソール操作とは別に、S3の設定がYAMLでどのように表現されるか確認したい場合は、次の画面から試せます。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?