今回はAWSの**「S3」** について学んだことをアウトプットさせて頂きたいと思います。
##S3 (Simple Strage Service)
S3とは、AWSのオブジェクトストレージサービスになります。
特徴としては、安価(1Gあたり約3円)で耐久性が高いことです。
また、保存容量の上限がなく、冗長化してデータを保存する仕組みもあります。
###そもそもオブジェクトストレージとは何か?
ストレージの種類には大きく分けて、ブロックストレージ、ファイルストレージ、ブロックストレージの
3種類がありますが、オブジェクトストレージには以下のような特徴があります。
- HTTPSのプロトコルで通信する。
- 他ストレージ(EBS、EFS)より読み書き速度が遅い。
- 多数の大きなファイルを取り扱うのに向いている。
- APIを使用した開発が容易。
これらの特徴から、現代のWebサービスにも非常にマッチしやすく、
オブジェクトストレージを使用するケースはとても多いです。
###S3のイメージ
S3のイメージについて説明していきます。
バケットの下にフォルダやオブジェクトを作成できます。
- 頂点のフォルダ...バケット
- フォルダ...プリフィクス
- データ...オブジェクト
###S3のセキュリティ
デフォルトではアカウント管理者及びルートユーザーのみアクセスが可能になっています。
S3のバケットに直接IAMポリシーを埋め込むことでIAMに権限を付与することができます。
この仕組をリソースベースのポリシーまたはバケットポリシーと呼びます。
このリソースベースの仕組みを扱うことで、特定のIPアドレスのみ許可などの接続制限を設定することも
できるようになります。
以下はポリシーのサンプルイメージです。(AWS Cloud Tech学習サービス参照 https://aws-cloud-tech.com/)
ポリシーの内容は、全てのPrincipalに対して、S3のResourceに指定したバケットを参照できるアクションを指定しています。また、参照できるCondition(条件)は、12.34.56.78のIPアドレスからのアクセスを許可しているといった感じです。
###S3のWebサイトのホスティング機能
S3では、HTML+CSSのみで生成されたWebサイトをホスティングすることも可能です。
S3の特徴として各オブジェクトには、一意のURLが関連付けられます。この特徴を活かし、
以下のような作業を行います。
①パブリックに読み取り権限を付与する。
②バケットプロパティ内、「Webサイトのホスティング機能を有効にする」にチェックを入れる。
上記の作業を行うと自動的にエンドポイントURLというものが発行されます。
ユーザーはエンドポイントURLにアクセスするだけでバケットに設置したWebサイトに
アクセスすることができるようになります。
この特徴を活かすことで、告知用のWebサイトなども簡単に用意することもできるので
大変便利な機能になります。
###S3のストレージクラスについて
S3には用途に合わせて以下の6つのストレージクラスが用意されています。
ストレージクラス | 概要 |
---|---|
標準 | デフォルトのストレージクラス(AZを3つ以上使用して冗長化) |
標準 – IA | S3標準に比べオブジェクト格納料金が安価。ただしデータの呼び出しに対して課金あり |
Intelligent-Tiering | コストの重なる低頻度/高頻度の2階層あオブジェクト別にアクセス頻度に応じて自動で階層移動。30日間アクセスがないオブジェクトは低頻度層に移動し、アクセスがあると自動的に高頻度層に移動 |
1 ゾーン – IA | S3 標準 – IAよりも安価。データの冗長率が低く、またデータの読み出しに対して課金あり※AZ1つ以上で冗長化であることに注意 |
Glacier | とても安い(S3標準と比較しデータ格納料金は1/5)だがデータの読み出しに課金および数分〜数時間かかる |
Glacier Deep Archive | S3 Glacierより安く最も低コストだがデータの読み出しに課金および長時間(12時間以内)かかる |
###S3のコストについて
S3のコストは保管料、転送量、リクエスト量に対して課金されます。
保管料
こちらは選択するストレージクラス(どれくらい冗長化するか)によって料金が変わります。
例えばS3標準か、Glacierするかなどで料金が異なるといったものです。
転送量
受信、同一リージョンのAWSサービスとの連携は無料。
具体的には、S3のバケットの中にどんどんデータを溜め込んでいく受信が無料です。また、同一リージョンのS3同士のコピー作業や、同一リージョンのEC2からS3のバケットに転送するといったデータ送信料金も無料であり、課金がされません。
※ただし送信は課金されます。
S3からインターネット回線を通して画像や音楽を配信するなどの送信動作に関しては課金されるため、注意が必要です。
リクエスト料
S3に対してのGET/PUT/POST/LIST/COPYなどのリクエスト数に対しての課金されます。
DELETEの動作においては無料になるのですが、上記のような表示、登録、更新、コピーなどには課金がされます。
###まとめ
S3とは、AWSのオブジェクトストレージサービスです。
S3を使用することで、冗長性、耐久性共に優れた環境でデータを管理することができます。
また、S3には6つのストレージクラスがあるのでアプリケーションの状態やライフサイクルに合わせて選択することが大切です。
S3を利用する場面としては、画像や動画の保存だけでなく、Webサイトのホスティングに使用することやCloudWatchやLamdaと連携してイベントを発動するなど様々な用途で使用することができます。
他のAWSリソースと連携する際には、S3のバケットに対しての権限を設定する必要がありますが、その際にはバケットポリシーというものを設定する方法も有効です。
課金制度については、基本的に保管料、転送量、リクエスト量によって課金がされます。
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com