
SAA対策の記事です。
SAA試験の中でも頻出で且つオプションが多くて覚えるのが大変なS3について、基本的な特徴とユースケース別にどういったオプションがあるのか記事にしてみました。
一番最後にS3の試験対策のコツを書いたので、ぜひそちらもあわせて読んでみてください。
S3とは
S3はAmazon Simple Storage Serviceの略で、AWSが提供する安価なストレージサービスです。
下記の特徴があるので覚えておきましょう。
- 高い耐久性・可用性
- 容量無制限(使用した分だけ課金)
- データの使用頻度に応じた様々なストレージクラス
- 静的webサイトの公開機能
そもそもストレージって?
念のためストレージについて確認しておきます。ストレージとはデータの格納しておく場所です。
スマホアプリでもwebサイトでも何でも良いですが、ログインすれば自分の購入履歴であったり、何かしらのデータをいつでも取得できるようになっていますよね。あんな感じでデータを保管してくれる場合に、裏ではS3のよなストレージサービスが存在します。
- ブロックストレージ:高速にデータにアクセスできるためEC2にアタッチして活用 例:EBS
- オブジェクトストレージ:案がで高耐久性を持つストレージ 例.S3 Glacier
- ファイルストレージ:複数のEC2インスタンスから同時にアタッチ可能。ファイル形式でデータを保存。 例.EFS

データベースも同じようにデータを保存できるサービスなので少し混乱しますが、データベースは「データを検索したり、一元管理できる」という機能を持ったソフトウェアを指す言葉で、ストレージとは単にデータを保管する場所という意味合いです。
データベースを使用する場合も見えないところでストレージが使われていることになりますので、ストレージはデータを保管するのに必ず必要なものという認識を持っておきましょう。
S3の特徴
S3の特徴をざっくり3点抑えておきましょう。
①耐久性・可用性に優れている。
S3の最大の特徴は耐久性・可用性に優れていることです。少し似ている言葉ですがそれぞれの意味合いとしては、
- 耐久性:保管しているデータがどれだけ喪失しないか。
- 可用性:システムがどれだけ停止せずに稼働し続けるか。
特にイレブンナイン(99.9999999%)の耐久性と言われており、保管しているデータが欠落するリスクがほとんどないことで有名です。
また可用性の面でポイントになるのが、自動で3つのAZ(アベイラビリティーゾーン)でデータを複製して保管してくれていることです。
データを1つの場所で保管している場合、データセンター障害等でシステムが止まるリスクがあるので、データを分散させて冗長化を図ることが必要ですが、S3の場合デフォルトでデータを分散して保管してくれているので、地域レベルの大災害が起こらない限りは安全にデータを保管できます。
②使用頻度に応じてストレージクラスを選択可能
S3はログデータやバックアップなど大量のデータを保管することが想定されることから、使用頻度に応じて安価なストレージクラスを選択可能です。
用意されているストレージクラスは下記の通りです。
ストレージクラス | ユースケース |
S3標準 | デフォルトのストレージクラス。
即時でデータの取得ができるため、使用頻度の高いデータを保管。 |
S3 Intelligent-Tiering | アクセス頻度に応じて自動でストレージクラスを分ける。使用頻度が低いデータがあるが、どのデータが低いか読めない時に使用する。 |
S3標準-IA | アクセス頻度は低いが、即時で取り出したい場合に使用。 |
S3ゾーン-IA | 「S3標準-IA」と同じユースケースだが、1つのAZのみで保管するため、データの重要度が低い場合に使用。 |
Amazon S3 Glacier Instant Retrieval | アクセス頻度は極めて低いが、即時で取り出したい場合。 |
S3 Glacier Deep Archive | アクセス頻度が極めて低く、取り出しに長時間かかる(12時間程度)ことが許容される場合。 |
下に行くにつれてコストは安くなります。
たくさんオプションがあり、混乱するかもしれませんが下の要素で振り分けられていると覚えておきましょう。
- データのアクセス頻度(高い→標準 中→IA 極めて低い→Glacier)
- データの取得にかかる時間(Glacier以外は即時、Glacier→遅い ※InstantRetrievalは即時)
- データの重要度(低い→ゾーン系)
- 使用頻度が高いデータを読めるかどうか(読めない→Intelligent-Tiering)
③容量無制限・低コスト
3つ目のポイントは容量無制限で低コストな点です。EC2やRDSなどとは違い稼働時間あたりの料金が存在せず、保管しているデータの容量とアクションに応じて料金が発生します。
S3の料金は下記の要素で決まります。
- 使用しているデータ量
- アクション(GET/PUT/COPYなどそれぞれリクエストに応じて課金)
- データ転送(同一リージョン内のサービス間や、インターネットから転送は無料 ※逆(S3→インターネット)、別リージョンへの転送は有料)
ユースケース別Q&A
以下は目的別に対応方法をまとめてみました。
要はどんな時に使うの?と整理するのが、AWS認定の攻略法の一つだと思います。
できるだけコストを下げたい
→S3 Glacierの活用。
S3のストレージクラスの解説でも上げましたが、S3に保管しているデータの中でも使用頻度の低いデータの保管用にS3 Glacierというサービスがあります。
S3と同じ耐久性を持ちながら安価に利用できるので、利用頻度が低いと分かっているデータに関してはGlacierの活用が有効です。長期利用が前提なので最低ストレージ期間(90日間)が決まっています。
実はGlacierはS3と異なりマネジメントコンソール上で操作することができず、下記の2つの方法どちらかと組み合わせて、S3のデータのアーカイブ先という使われ方をします。
- ライフサイクル管理
- Intelligent-Tiering Archive
これらは2つともS3に保管するオブジェクトのうち、特定の条件に合致したオブジェクトを自動でS3 IAやGlacierなどの低コストクラスに移行してくれるサービスです。
それぞれ2つの使い分けですが、ライフサイクル管理がオブジェクトを保管してからの日数ベースで移行するのに対し、Intelligent-Tiering Archiveは低頻度のオブジェクトを自動で移行してくれます。つまり下記の使い分けができます。
- 古いオブジェクト=低頻度→ライフサイクル管理
- オブジェクトの新旧と使用頻度の関連がない→Intelligent-Tiering Archive
Intelligent-Tiering Archiveは頻度を図るためにモニタリングが必要なことから、モニタリングの料金が発生します。「100日経ったらほぼほぼ使わない」というような予測がつく場合にライフサイクル管理の方がお得です。
間違ってオブジェクトを削除してしまわない設定をしたい
→バージョニングの有効化
バージョニング設定をすることで、S3オブジェクトに変更を加えた際、古いバージョンのデータを残すことができます。データを更新した場合だけでなく削除した場合も同様です。
ただし、バージョニングで残ったデータも明示的に「完全に削除」することで、データは復元できなくなります。二重に削除防止したい方は「MFA(Multi-Factor Authentification)の削除」というオプションがありコンソール上では削除できないような設定もあるので、頭の片隅にだけ入れておくと良いと思います。
大きなサイズのデータをアップロードしたい
→マルチパートアップロード
PCでプログラム等をインストール中に「速度が遅くやり直しになった」等の経験をしたことがある方もいらっしゃるかと思います。
S3でも同様のことが起こり得ます。そういったケースではマルチパートアップロードが有効です。データを分割してアップロードすることで、短時間でアップロード可能になります。5GB以上で推奨、100GB以上で必須となります。
アクセス管理の仕組みを知りたい
- IAMユーザーポリシー:IAMユーザーに対してS3オブジェクトに対してできることを定義して付与。
- バケットポリシー:バケットのアクセス権をJSONで定義。1つのバケットに対して1つ設定可能。IP指定も可能。
- ACL:バケット/オブジェクト単位で設定。バケットに対してはバケットポリシーで制御が基本だが、オブジェクト単位で指定できるのが強み。
- アクセスポイント:バケットに対して複数設定可能。バケットポリシーに比べ細かく制御できる。
暗号化の仕組みを知りたい
→以下の4つの暗号化を使用することができます。
- SSE-S3:S3が用意している暗号化キーを使用して自動的に暗号化(AES256使用)→選択することでS3で自動的に暗号化してくれる
- SSE-KMS:KMS(AWSの暗号化キー管理サービス)で作成したキーで暗号化
- SSE-C:クライアントが作成した暗号化キー(AWS外)で暗号化
- クライアントサイド暗号化:S3にデータを送信する前に食らう慰安とが作成した暗号化キー(AWS外)で暗号化
特定の人にのみS3バケットへアクセスさせたい
→署名つきURL
期限を設定してS3オブジェクトにブラウザ上からアクセス可能なURLを発行することができます。
グローバルにユーザーがいるサイトでも高速で使えるようにしたい
→TransferAccelerationの有効化。
ユーザーがS3のロケーションと離れている場合にデータの転送に時間がかかります。そのようなケースではTransferAccelerationを有効化することで、転送を早くすることができます。
S3と他のサービスを連携させてサーバーレスアプリケーションを作りたい
→S3イベント通知の設定
S3へのデータのアップロードをトリガーに、LambdaであったりSNSでメール通知を自動化したいケースがあると思います。その場合S3イベント通知機能で設定することで、S3のイベントをトリガーとしたアプリケーションを容易に構築することができます。
異なるS3バケットとデータを同期させたい
→レプリケーション
異なるS3バケットとデータを同期する場合レプリケーションの設定を行います。
中でも異なるアカウントでの同期をクロスアカウントレプリケーション、別のリージョンでの同期をクロスリージョンレプリケーションと言います。
レプリケーションをするにはバージョニング設定が必須となり、新たに更新されたデータのみ同期されます。既存のデータの同期は別途「バッチオペレーション」という機能でレプリケーションが必要です。
別リージョン間でのレプリケーションは有料になる点は覚えておきましょう。
S3のログを保管したい
→サーバーアクセスログの有効化
S3のリクエストに関するログを保管する場合はサーバーアクセスログを有効化しましょう。デフォルトでは無効です。別途ログ保管用のS3バケットが必要になります。
webサイトを公開したい
→静的webホスティングの有効化
静的webホスティングを有効化することで、サーバー等別途用意することなく、簡単にwebサイトを公開することができます。
SAAでも静的webサイトに関する問題は良く出題されます。EC2でももちろんできますが、サーバーレス(メンテ不要)、冗長化不要というポイントがあるため静的webサイトときたらCloudFront + S3構成です。
S3単独でも公開自体できますが、通信をTLS化(https通信)する際にCloudFrontが必要になるので、セットで覚えておきましょう。
S3の使用状況を確認したい
→S3 Storage Lens
どのバケットでどれだけ使用しているかを可視化してくれるサービスがStorageLensです。
それ以上の深堀はないと思いますが、分析ツールときたらStorage Lensと覚えておきましょう。
SAA対策S3のおすすめ勉強法
以下私の個人の意見ですが、AWS認定合格には2つのポイントがあると思っています。
下記の2つです。
- ①udemyの教材の活用
- ②ハンズオンをやりすぎない
udemyの教材の活用
まず一つ目がudemyの教材の活用です。
買い切り45.5時間のコースでセール時は2000円台です。
書籍も教科書的には良いのですが、やはり動画教材はデモを見れたりと情報量が圧倒的に多く、理解を深めるには最適な教材です。
SAA対策の教材ではありますが、広範囲かつ細かく紹介してくれているので正直一生ものです。私がSAAを取得したのは1年前ですが、業務で新しいサービスを使う時にいつでもこの動画で確認できるので、今後AWSを使う機会があるという方なら購入して損は絶対ありません。
ハンズオンをやりすぎない
こちらは場合によりけりですが、時間が有り余っていない限りすべてのハンズオンをやろうとするのはおすすめしません。時間がかかりますし、ハンズオンをやったからといって問題を解けるとは限らないからです。
サーバーやネットワーク関連は仕組みを理解するために実際に構築するのが良いと思いますが、S3に限ってはチェックを入れたらできてしまうようなオプションが多いので、デモを動画で見て勉強するだけで十分なのではないかと思います。
そのほかAWSの勉強法については下記の記事にまとめていますので、ぜひ読んでみてください。
-
-
【初心者向け】AWSおすすめ学習法まとめ(udemyハンズオン等)
続きを見る
私が文系大学卒で1年程度でSAA取得できたように、独学で狙える資格です。
資格で体系的に勉強することで、自信にもなりますので、ぜひ挑戦してみてください。