🗂

S3について学んだのでまとめてみた

2021/08/08に公開

S3(Simple Storage Service)とは

99.999999999%[1]の耐久性をもつオブジェクトストレージサービスです
保存容量の制限はなく、ストレージを自動で冗長化して保存します。

保存形式について

S3ではバケット、プリフィクス、オブジェクトといった独特な用語があります。
それぞれ、下記のように対応しています。
ルートレベルのディレクトリ:バケット
バケットより下位のディレクトリ:プリフィクス
データ:オブジェクト

S3ではkey,value形式で表し階層構造はないですがわかりやすくするために
プリフィクスをディレクトリのように表します。
バケット名はすべて小文字でグローバルでユニークである必要があります。

セキュリティについて

デフォルトではアカウント管理者またはルートユーザのみがアクセス可能です。なので、IAMでアクセス権限の管理を行う必要があります。
また、アカウント単位、バケット単位、オブジェクト単位でそれぞれACL(アクセスコントロールリスト)を設定できます。これは過去にS3の設定ミスによる情報漏洩事故が起きたためにできた機能のようです。
たとえば、アカウント単位で設定するときはS3を作成するときに下記画像のように設定できます。
アカウント単位のACL設定
パブリックアクセスをすべてブロックすることで新規でオブジェクトをアップロードするときに、非公開状態でアップロードされることになります。テスト用などの場合はパブリックアクセスをすべてブロックしたほうがいいでしょう。

Webサイトのホスティング機能

S3にHTMLファイルのオブジェクトを保存することでエンドポイントURLが発行されるので、そのURLをアクセスすることでWebサイトを閲覧することができます。

イベント通知機能

S3にデータを保存したときなどのタイミングをトリガーにして他のサービス(lambdaなど)を呼び出すことが可能です。たとえば、メール通知などができます。私も過去にイベントでLinebotの作成をしたときに、Lambda関数を使いました。そこではS3に日本語のテキストが保存されるとLambda関数が発火して、英語に翻訳されました(記憶の範囲なので間違ってたらすみません🙇‍♀️)
イベント通知について公式のチュートリアルがあるので、お時間があるかたは試してみてください。

ストレージクラス

S3では使用頻度に応じて、最適なストレージクラスを使い分けることができます。
それぞれ、料金の違いや読み出しにかかる時間などが異なります。
1ゾーンIA以外は、最低3つのAZに自動で配置されています。

  • 標準
    デフォルトで設定されているストレージクラスです。
  • 標準IA
    標準に比べてオブジェクトに格納される料金は安いが、データの読み出しに課金が必要です。
  • Intelligent-Tiering
    オブジェクトのアクセス頻度に応じて、自動的に最適なストレージクラスに振り分けてくれます。
  • 1ゾーン-IA
    標準IAよりも安価です。AZ1つ以上で冗長化していて、1つのAZにしか保存されていない可能性があります。AZ障害が起こると、データが消失するリスクがあるので、重要なデータは1ゾーン-IAは使わないようにしましょう。
  • Gracier
    標準のストレージクラスと比較して料金が1/5と、とても料金が安いですがデータの読み出しに課金され、データの読み出しに数分から数時間かかります。
  • Gracier Deep Achive
    料金がストレージクラスの中で最も安いですが、データの読み出しに課金され、データの読み出しに12時間以下の時間がかかります

バージョニング(世代管理)

あるオブジェクトについてv1,v2,v3...etcと複数のバリアントを保持することができます。
バケット単位で有効にすると間違ってオブジェクトを削除しても簡単に復元することができます。
オブジェクトを削除した場合は完全に削除されずに削除マーカというものが付与されます。
S3に保存したオブジェクトの保存、取り出し、復元を行うことができます。
デフォルトではバージョニングは無効になっているので、明示的に有効にする必要があります。

ライフサイクルマネジメント

ある一定期間が過ぎると自動的にストレージクラスを移動するという設定ができます。

参考

AWSについてわかりやすく解説している神サービスです😇

https://aws-cloud-tech.com/

公式サイト

https://aws.amazon.com/jp/s3/

https://www.youtube.com/watch?v=G6kEtrFaEAU

脚注
  1. 9が11コついているのでイレブンナインと読みます ↩︎

GitHubで編集を提案

Discussion