サービス

AWS|AWSのS3についてまとめました【解説】

Amazon Simple Storage Serviceの略で、Sが3つ並ぶことからS3と呼ばれている。インターネット対応の完全マネージド型のオブジェクトストレージ。

S3の特徴

S3には次の特徴がある。

  • 無制限のストレージ容量
  • 高い耐久性
  • インターネット経由でアクセス

S3を使用することで、ストレージの管理や冗長化、事前の容量を確保することを考えることなく、アプリケーションやサービスの開発に注力できる。

無制限のストレージ容量

  • S3では、保存したいデータ容量を先に決めておく必要はない。
  • バケットというデータの入れものを作れば、データを保存し始めることができる。
  • 保存できるデータ容量は無制限。※1つのファイルについては5TBまでという制限はある。
  • ストレージ容量の確保/調達を気にすることなく開発に専念できる。

高い耐久性

  • S3はリージョンを選択してバケットを作成し、データをオブジェクトとしてアップロードする。そのオブジェクトは1つのリージョン内の複数のアベイラビリティゾーンにまたがって、自動的に冗長化して保存される。
  • S3の耐久性はイレブンナイン(99.999999999%)。
  • 冗長化やバックアップを意識することなく開発に専念できる。

インターネット経由でアクセス

  • S3にはインターネット経由(HTTP/HTTPS)でアクセスする。
  • 適切なアクセス権限のもと、世界中のどこからでもアクセスできる。
  • マネジメントコンソール、AWS CLI、SDK(ソフトウェアデベロップメントキット)、APIからもアクセスできる。

S3のセキュリティ

S3バケットは、作成した時点では、作成したアカウントから許可されたユーザーやリソースからのアクセスのみを受け付ける。これはデフォルトでプライベートであるということ。必要に応じて特定のアカウント、IAMユーザー、AWSリソースにアクセス制限を設定する。インターネット上で公開設定することもできる。

アクセス制限

S3で設定するアクセス権限には以下の3種類がある。

  • アクセスコントロールリスト(バケットとオブジェクトに設定できる)
  • バケットポリシー(バケットに設定できる)
  • IAMポリシー

アクセスコントロールリスト(ACL)

アクセスコントロールリストでは主に以下のことが可能。

  • 他の特定のAWSアカウントにオブジェクトの一覧を許可
  • 他の特定のAWSアカウントにオブジェクトの書き込みを許可
  • 他の特定のAWSアカウントにオブジェクトの読み取りを許可
  • 誰にでもオブジェクトの一覧を許可
  • 誰にでもオブジェクトの書き込みを許可
  • 誰にでもオブジェクトの読み取りを許可

バケットポリシー

バケットポリシーではアクセスコントロールリストよりもっと細かい設定ができる。

IAMポリシー

  • IAMユーザーにアクセス権を設定する他に、AWSサービスにS3へのアクセス権を設定する際にもIAMポリシーが使える。たとえばEC2からS3にアクセスする場合。
  • 上記を実現する方法としては、IAMロールの設定が推奨されている。IAMポリシーをアタッチしたIAMロールを作成する。

通信、保存データの暗号化

  • S3にはインターネット経由でアクセスする。HTTP/HTTPSでアクセスすることが可能。HTTPSでアクセスすることによって通信が暗号化される。
  • アクセスする対象のエンドポイントは、バケット名、オブジェクト名によって決定される。
  • 保存データの暗号化は複数の方法から選択できる。S3のキーを使用したサーバーサイド暗号化。KMS(ユーザーがAWS上に作成するマスターキー)を使用したサーバーサイド暗号化。ユーザー独自のキーを使用したサーバーサイド、またはクライアントサイド暗号化。

S3の料金

S3の料金は主に次の3要素。

  • ストレージ料金
  • リクエスト料金
  • データ転送料金

ストレージ料金

  • 保存しているオブジェクトの容量に対しての料金。
  • 1か月全体をとおしての平均保存料で算出される。
  • リージョンによって料金が異なる。
  • ストレージクラスによっても料金が異なる。ストレージクラスは以下がある。

標準

  • ストレージクラスを指定しない場合のデフォルトのストレージクラス。
  • 東京リージョンの料金は0.025USD/GB(最初の50TB) ※2019/12/7時点

低頻度アクセスストレージ(標準IA)

  • アクセスする頻度の少ないオブジェクトを格納することで、S3のトータルコストを下げることができる。
  • 東京リージョンの料金は0.019USD/GB ※2019/12/7時点
  • ストレージ料金は標準ストレージよりも安価になるが、リクエスト料金が標準ストレージよりも上がる。ユースケースの一例はバックアップデータ。

1ゾーン低頻度アクセスストレージ(1ゾーンIA)

  • アクセスする頻度が少なく、かつ、複数のアベイラビリティゾーンに冗長化される耐久性を必要としないオブジェクトを保存する場合に使用する。
  • 東京リージョンの料金は0.0152USD/GB ※2019/12/7時点
  • ユースケースの一例は、複数リージョンにバックアップデータを保存する場合など、該当のS3バケット以外にもデータの複製があるケース。万が一対象のアベイラビリティゾーンが使えなくなったとしても問題がない場合の選択肢。

Amazon Glacier

  • Amazon Glacierは単独のサービスとしても使用できるアーカイブサービス。
  • ほとんどアクセスしないものの保存はしておかなければならないような、アーカイブデータを格納する。
  • 東京リージョンの料金は0.005USD/GB ※2019/12/7時点
  • ユースケースの一例は、規約によって保存年数が決められているデータなど。アクセスすることはほとんどなくても削除はできないデータに最適。

ライフサイクルポリシー

  • S3では初回のアップロード時から各ストレージクラスを指定することができる。
  • アップロードした日から起算して自動でストレージクラスを変更するライフサイクルポリシーを設定することもできる。
  • たとえば、error.log。1週間は標準ストレージで補完。その後は低頻度アクセスストレージに変更。その後30日経過したらAmazon Glacierに変更。1年後には削除。このようにすることで不要なオブジェクトに保存コストがかかることを避けながら、コスト効率の良い仕様ができる。

リクエスト料金

データをアップロードしたりダウンロードするリクエストに対して料金が発生する。

Amazon S3 の料金

データ転送料金

Amazon S3 の料金

  • リージョンの外にデータを転送した場合に発生する。リージョンによって異なる。
  • インターネットへ転送した場合と他リージョンへ転送した場合でも料金が異なる。
  • インターネットからAmazon S3へのデータ転送受信(イン)は課金対象外。
  • リージョン外であっても、CloudFrontへの転送料金は課金対象外。

S3のユースケース

  • アプリケーションのデータ保存
  • HTML、CSS、JavaScript、画像、動画ファイルなどの静的コンテンツの配信
  • データバックアップの保存
  • ログデータ、センサーデータなどの保存
  • ビッグデータのステージング(Redshift、Athena、EMR)
  • クロスリージョンレプリケーションによるDR対策

その他のストレージサービス

  • EFS(Amazon Elastic File System)。複数のEC2インスタンスでマウントして共有利用できるファイルストレージサービス。
  • Storage Gateway。オンプレミスアプリケーションとAWSのストレージサービスを接続して利用することができるゲートウェイサービス。
  • Snowball。物理デバイスを使用して、ペタバイト級の大容量データ転送を行うことができるサービス。主にオンプレミスからAWSへデータ転送する際に利用する。

AWS関連の記事を以下にまとめました。ぜひご覧ください!