ネコロビング!ツヴァイ!

寝ころびながら勉強したことを記録していく日記です

【AWS】S3についてまとめ

■S3

Amazon Simple Storage Service(s3)


オブジェクトストレージサービス
データ(オブジェクト)にキー(ユニークID)を付与してフラットに格納する
各オブジェクトにはURLが付与される
1オブジェクトが5TBまで
格納可能なオブジェクト数やデータ総数は無制限
特定のリージョンにバケットと呼ばれる格納先を作成する
バケット名はAWSの全アカウント(全世界)で一意とする必要がある
S3はオンラインで頻繁に更新されるようなデータ格納先としては不向きである
静的なデータを何度も読みだすような用途に使用する

S3にはストレージクラスがある

 

スタンダードクラス
アップロードされたオブジェクトをデフォルトでリージョン内の3か所のデータセンタに複製される
そのため、99.99999999%の耐久性を誇る
使用用途、失うことが許されないオリジナルデータなどを格納する

 

RRS(低冗長化ストレージ)
スタンダードよりも耐久性は低い(99.99%)
スタンダードよりもコストが抑えることができる
オリジナルからの加工データなど再生成可能なデータを格納する


※低頻度アクセスS3が2015年から稼働しているらしい→後で調べる
スタンダードの耐久性をもちつつ、アクセス頻度が少ないデータを格納するのに向いている


■S3の整合性

オブジェクトの新規格納(PUT)
書き込み後、すぐに一覧表示しても表示されないことがある
大事=S3から「完了」が返された後に一覧表示するとオブジェクトは存在する
書き込み後の読み込み整合性があるので

既存オブジェクトの上書き(PUT)
大事=S3から「完了」が返されても、データにアクセスすると古いデータが取得される事がある
時間がたてば書き換わる

オブジェクトの削除(DELETE)
大事=S3から「完了」が返されても、一覧に表示されやりデータにアクセスする事ができる
時間がたてば削除される

 

■S3のアクセス制限とセキュリティ

デフォルト
そのリソース(S3バケット、オブジェクト)を作成したアカウントにだけアクセス権限が付与されている

 

アクセス管理方法

アクセスコントロールリスト(ACL)
バケット、オブジェクト両方
ほかのAWSアカウントからの書き込み、読み取りの許可を設定できる
オブジェクトに付与されているURLについてもHTTPSアクセス許可を与えることができる
条件付きアクセス許可やアクセス拒否は設定できない
自アカウント内のIAMユーザー、グループのアクセス権制限もできない

バケットポリシー
バケットのみ
自アカウント内のIAMユーザーやグループにアクセス許可を与えることができる
他アカウントのユーザーに対しても許可を設定できる
条件付きアクセス許可、アクセス拒否も設定可能

IAMポリシー
S3へのアクセス許可を設定したIAMポリシーをIAMユーザーやグループ、ロールに割り当てることができる
条件付きアクセス許可、アクセス拒否も設定可能
他のアカウントを指定したアクセス設定はできない

著名付きURL
有効期限付きURLを作成することができる
例)10分間だけアクセス可能なURLを発行する
商品Aを購入したユーザーに特典映像として特典Bのオブジェクトに10分間だけアクセスできるURLを発行する
→得点BのURLを購入者以外に流れてしまっても10分経てばアクセスできなくなる

 

■オブジェクトの暗号化とアクセスログ

S3バケットに格納されているオブジェクトを「任意」で暗号化できる
AWSが管理する鍵やユーザが管理する鍵を使ってサーバサイドで暗号化することができる
クライアント側で事前に暗号化したデータをアップロードする事もできる

S3バケットへのアクセスログは任意で同じ/異なるS3バケットに取得する事ができる
アクセスログの取得はベストエフォードで記録されるため完全性は保証されていない
アクセスログの格納バケットへのログの書くのは実際のアクセスから時間をおいて行われる

 

■S3の静的webサイトホスティング機能
S3のwebサイトホスティング機能を使用することで静的なwebサイトをS3設置に設置できる
EC2を利用するよりも安価にwebサイトの運用ができる
PHPJSPなど動的にページを生成するようなサイトはできない
この機能を利用した場合のアクセス先のエンドポイントは決まっており
そのエンドポイントを所有しているドメインでアクセスさせるためにはRoute53などのDNSサービスで名前解決が必要

 

■S3のバージョニング機能
オプション設定でバージョニング機能を設定できる
オブジェクトにキーのほかにバージョンIDが付与される
オブジェクトを上書き保存すると、別バージョンIDが付与され、前のオブジェクトとは別に格納される
オブジェクトを削除する場合も異なるバージョンIDと削除マーカーが付与されたオブジェクトが生成され削除前のオブジェクトが保持される

 

■S3のライフサイクルとGlacierへのアーカイブ

AmazonGlacier
削除したくない、できないが普段アクセスすることはほとんどないデータ向け
データのアーカイブや長期バックアップの格納先として利用
S3と同等の耐久性がある
S3よりもコストを抑えることができる

格納する方法は2種、S3のライフサイクル機能とSDKを使って直接格納する方法

S3のライフサイクル機能
S3に格納したオブジェクトを指定した日数経過後にGlacierに移動したり削除したりできる
→とあるログを1年後にGlacierに移動、5年後に削除ということをジョブで自動化できる

Glacierに格納したデータはそのままでは参照できず、取り出す必要がある
データを取り出す時間はデータの大小関係なく3~5時間かかる
データの取り出しはGlacierに保管しているデータ量(月平均)の5%までは無料だが、それ以上は取り出し料金が発生する