【AWSサービス 基礎編】Amazon S3 でバケットを作成しオブジェクトを管理する

Amazon S3 でバケットを作成しオブジェクトを管理する
目次

概要

Amazon S3(Simple Storage Service)は、AWS が提供するオブジェクトストレージサービスです。インターネット経由でどこからでもデータを保存・取得でき、容量の制限を意識することなく利用できます。

クラウド上でアプリケーションを構築する際、画像・動画・ログ・バックアップデータなど、さまざまなファイルを保管する場所が必要になります。S3 はこうしたデータの保存先として最も広く使われるサービスであり、高い耐久性(99.999999999%)と可用性を備えています。この記事では、S3 バケットの作成からオブジェクトのアップロード・ダウンロード・削除までの基本操作を体験します。

この記事のメリット

  • Amazon S3 の基本概念(バケット、オブジェクト、キー、ストレージクラス)を理解できる
  • AWS マネジメントコンソールからバケットを作成する手順を習得できる
  • オブジェクトのアップロード・ダウンロード・削除の基本操作を体験できる
  • バケットポリシーとアクセス制御の基本的な考え方を把握できる
  • バージョニングの有効化と動作を確認できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

クラウドおさる

とひさん、Amazon S3 ってよく聞くんですけど、どんなサービスなんですか?

土肥

S3 は「オブジェクトストレージ」と呼ばれる種類のストレージサービスだよ。普通のファイルシステムみたいなディレクトリ階層は持たず、データを「オブジェクト」として一意のキーで管理するんだ。容量制限が実質的に存在しなくて、保存したデータ量と転送量に応じて課金される従量課金モデルだね。

クラウドおさる

ファイルシステムとは違うんですね。データの管理はどういう仕組みになってるんですか?

土肥

S3 のデータ管理は「バケット」と「オブジェクト」の2つの概念で構成されるよ。

要素説明
バケットオブジェクトを格納するコンテナ。グローバルに一意な名前が必要
オブジェクトS3 に保存されるデータの単位。ファイルの実体(データ)とメタデータで構成される
キーバケット内でオブジェクトを一意に識別する名前。パス区切り(/)を含めることでフォルダのように整理できる
土肥

例えば、バケット名が my-app-bucket、キーが images/photo.jpg の場合、このオブジェクトの S3 URI は s3://my-app-bucket/images/photo.jpg となるんだ。

クラウドおさる

なるほど、バケットがフォルダみたいなもので、その中にオブジェクトが入ってるイメージですね!ところで、保存するデータの種類によってコストを最適化できたりするんですか?

土肥

いいところに気づいたね。S3 はデータのアクセス頻度や要件に応じて複数のストレージクラスを提供しているよ。

ストレージクラス特徴ユースケース
S3 Standard高頻度アクセス向け。高い可用性と耐久性頻繁にアクセスするデータ
S3 Standard-IA低頻度アクセス向け。Standard より保存コストが低いバックアップ、災害復旧データ
S3 One Zone-IA単一 AZ に保存。IA よりさらに低コスト再作成可能なデータの低頻度アクセス
S3 Glacier Instant Retrievalアーカイブ向け。ミリ秒単位の取り出し四半期に1回程度アクセスするアーカイブ
S3 Glacier Flexible Retrievalアーカイブ向け。取り出しに数分〜数時間年に1〜2回アクセスするアーカイブ
S3 Glacier Deep Archive最も低コスト。取り出しに12時間以内長期保存が必要なコンプライアンスデータ
S3 Intelligent-Tieringアクセスパターンに基づき自動でクラスを移動アクセスパターンが予測できないデータ
クラウドおさる

こんなに種類があるんですね。アクセス頻度が低いデータほどコストを抑えられるってことですね。

クラウドおさる

でも、間違えてファイルを上書きしちゃったらどうなるんですか?元に戻せるんでしょうか……。

土肥

そういう心配に対応できるのが「バージョニング」だよ。バージョニングを有効にすると、同じキーのオブジェクトを上書きアップロードしても、以前のバージョンが保持されるんだ。誤った上書きや削除からデータを保護する仕組みだね。バージョニングの状態は以下の3つがあるよ。

状態説明
無効(デフォルト)バージョニングが設定されていない
有効すべてのオブジェクトのバージョンが保持される
一時停止新しいバージョンの作成が停止されるが、既存のバージョンは保持される
クラウドおさる

バージョニングがあれば安心ですね!あと、S3 に保存したデータのアクセス制御はどうやって管理するんですか?

土肥

S3 のアクセス制御にはいくつかの仕組みがあるんだ。

仕組み説明
バケットポリシーバケット単位で JSON 形式のポリシーを設定する。パブリックアクセスの許可・拒否など
IAM ポリシーIAM ユーザーやロールに対して S3 操作の権限を付与する
パブリックアクセスブロックバケットやアカウントレベルでパブリックアクセスを一括でブロックする
ACL(アクセス制御リスト)オブジェクト単位での制御。現在は無効化が推奨されている
クラウドおさる

けっこういろいろあるんですね……。どれを使えばいいか迷いそうです。

土肥

基本的にはバケットポリシーと IAM ポリシーを使い分けるのが一般的だよ。パブリックアクセスブロックはデフォルトで有効になっているから、意図しない公開を防いでくれるんだ。ACL は今は無効化が推奨されているから、新規で使うことはほとんどないね。

クラウドおさる

わかりました!それでは実際にバケットを作って触ってみましょう!

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ここでは、S3 バケットを作成し、オブジェクトのアップロード・ダウンロード・削除と、バージョニングの動作を体験します。

前提条件

  • リージョン: ap-northeast-1(東京)
  • AWS マネジメントコンソールにログイン済み
リソース種別リソース名用途
S3 バケットmy-first-s3-bucket-<アカウントID>ハンズオン用バケット

バケット名はグローバルに一意である必要があるため、AWS アカウント ID などを付与して重複を避けてください。

バケットを作成する

  • AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します
  • 上部の検索バーに S3 と入力し、表示された「S3」を選択します
  • 「バケットを作成」をクリックします
  • 以下を設定します
  • バケット名: my-first-s3-bucket-<アカウントID>(例: my-first-s3-bucket-123456789012)
  • AWS リージョン: アジアパシフィック(東京)ap-northeast-1
  • 「パブリックアクセスをすべてブロック」がチェックされていることを確認します
  • その他の項目はデフォルトのままにします
  • 「バケットを作成」をクリックします
S3 バケット作成画面(バケット名とリージョンの入力)

バケット一覧画面に戻り、作成したバケットが表示されていることを確認します。

バケット一覧画面(作成したバケットが表示されている状態)

オブジェクトをアップロードする

  • バケット一覧から作成したバケット名をクリックして開きます
  • 「アップロード」をクリックします
  • 「ファイルを追加」をクリックし、任意のファイル(テキストファイルや画像など)を選択します
  • その他の設定はデフォルトのままにします
  • 「アップロード」をクリックします
オブジェクトのアップロード画面(ファイルが追加された状態)

アップロード完了画面が表示されたら「閉じる」をクリックします。バケット内にアップロードしたオブジェクトが表示されていることを確認します。

バケット内のオブジェクト一覧(アップロードしたファイルが表示されている状態)

オブジェクトをダウンロードする

  • バケット内のオブジェクト一覧から、ダウンロードしたいオブジェクトのチェックボックスを選択します
  • 「ダウンロード」をクリックします

ファイルがローカルにダウンロードされます。

フォルダを作成してオブジェクトを整理する

S3 には実際のフォルダ構造はありませんが、コンソール上ではフォルダのようにオブジェクトを整理できます。

  • バケット内で「フォルダの作成」をクリックします
  • フォルダ名に images と入力します
  • 「フォルダの作成」をクリックします

作成した images フォルダをクリックして中に入り、「アップロード」から任意のファイルをアップロードします。このオブジェクトのキーは images/<ファイル名> となります。

バージョニングを有効にする

  • バケットのトップ画面に戻り、「プロパティ」タブを選択します
  • 「バケットのバージョニング」セクションの「編集」をクリックします
  • 「有効にする」を選択します
  • 「変更の保存」をクリックします
バケットのバージョニング編集画面(「有効にする」を選択した状態)

バージョニングの動作を確認する

  • 「オブジェクト」タブに戻ります
  • 最初にアップロードしたファイルと同じファイル名で、内容を変更したファイルをアップロードします
  • アップロード完了後、オブジェクト一覧で「バージョンの表示」トグルをオンにします

同じキーのオブジェクトに対して複数のバージョンが保持されていることが確認できます。

バージョン表示をオンにした状態のオブジェクト一覧(同一キーに複数バージョンが表示されている)

オブジェクトを削除する

  • オブジェクト一覧で削除したいオブジェクトのチェックボックスを選択します
  • 「削除」をクリックします
  • 確認画面で「完全に削除」と入力し、「オブジェクトの削除」をクリックします

バージョニングが有効な場合、「バージョンの表示」がオフの状態で削除すると、削除マーカーが付与されるだけでデータ自体は残ります。「バージョンの表示」をオンにすると、削除マーカーと以前のバージョンが確認できます。

削除後のバージョン表示(削除マーカーと以前のバージョンが表示されている状態)

まとめ

  • Amazon S3 はオブジェクトストレージサービスであり、バケットとオブジェクト(キー)の2層構造でデータを管理する
  • バケット名はグローバルに一意である必要がある
  • ストレージクラスを使い分けることで、アクセス頻度に応じたコスト最適化が可能
  • バージョニングを有効にすると、オブジェクトの上書き・削除時に以前のバージョンが保持される
  • パブリックアクセスブロックはデフォルトで有効であり、意図しない公開を防止する
  • バージョニング有効時の削除は削除マーカーの付与であり、データ自体は残る

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます
Amazon S3 でバケットを作成しオブジェクトを管理する

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次