はじめに
AWSのストレージサービスの一つ、AWS S3 についての備忘録。
AWSのストレージサービスについて
サービス名 | 略称 | ストレージタイプ | 説明 | コスト(1GBあたり/月) | 備考 |
---|---|---|---|---|---|
Elastic Block Store | EBS | ブロックストレージ | EC2にアタッチするためのボリューム。 | 凡用:0.12USD コールドHDD:0.03USD |
|
Elastic File System | EFS | ファイルストレージ | ファイル共有サービス。VPCに対してファイルシステムを構築し、AZごとにサブネットに対してマウントさせる。 | 標準:0.36USD 低頻度アクセス:0.0272USD |
EFSの標準がストレージの中で最も費用が高い。 |
Simple Storage Service | S3 | オブジェクトストレージ | データをオブジェクト単位で読み書きする。エンドポイントが作られるので、HTTPSなどでアクセスできる。 | S3 を参照 |
S3
用語
名称 | 説明 | 容量 |
---|---|---|
バケット | オブジェクトの格納場所。 バケット名はグローバルでユニークにする必要がある。 |
無制限。自動で拡張される。 |
オブジェクト | S3に格納されるファイル形式。 オブジェクトごとにURLが発行される。 |
バケット内に保存可能なオブジェクト数は無制限。 1オブジェクトあたりのサイズは5TBまで。 |
ストレージタイプ
ストレージタイプ | 説明 | 耐久性 | 可用性 | コスト(1GBあたり/月) | 備考 |
---|---|---|---|---|---|
STANDARD | 頻繁に利用且つ大量のデータ保存向け。 | 99.999999999% | 99.99% | 0.025USD | ※耐久性:データ損失リスクの指標。 |
STANDARD-IA | 低頻度アクセス用。 STANDARDよりも安価だが、ONE ZONE-IAよりは高い。 |
99.999999999% | 99.9% | 0.019USD | ※IA:Infrequent Access |
ONE ZONE-IA | 低頻度アクセス用。 Multi AZではないため、クリティカルではないデータ向け。 STANDARD-IAよりも安価。 |
99.999999999% | 99.5% | 0.0152USD | |
Glacier | アーカイブ用。 バックアップなどのデータ向け。 データの取り出しに時間がかかる。 ユースケースとして、30日や90日経過したらGlacierに移行してアーカイブするといった設定が可能。 |
99.999999999% | N/A | 0.005USD | 標準抽出:3〜5時間 迅速抽出:2〜5分 |
Glacier Deep Archive | アーカイブ用。 Glacierよりも安価だが、抽出にさらに時間がかかる。(12時間以内) |
99.999999999% | N/A | 0.002USD | |
Intelligent Tiering | アクセスパターンに基づいてコスト効率の高いストレージ階層に自動で移動してくれる機能。 アクセスが多いファイルはSTANDARDに、アクセスが少ないファイルはSTANDARD-IAに自動で振り分けられる。 |
99.999999999% | 99.99% | STANDARD と STANDARD-IA の組み合わせ | アクセス頻度がわからない場合に設定することで、コストの最適化ができる。 |
ライフサイクル設定
別ストレージタイプへの移行可否(○/×) | STANDARD | STANDARD-IA | Intelligent Tiering | ONE ZONE-IA | Glacier | Glacier Deep Archive |
---|---|---|---|---|---|---|
STANDARD | - | ○ | ○ | ○ | ○ | ○ |
STANDARD-IA | × | - | ○ | ○ | ○ | ○ |
Intelligent Tiering | × | × | - | ○ | ○ | ○ |
ONE ZONE-IA | × | × | × | - | ○ | ○ |
Glacier | × | × | × | × | - | ○ |
Glacier Deep Archive | × | × | × | × | × | - |
アクセス管理
管理方法 | 説明 |
---|---|
IAM ポリシー | 内部のIAMユーザーやリソースに対しての権限管理。 |
S3 バケットポリシー | 外部も含めたアクセス権限管理。 |
ACL(アクセスコントロールリスト) | オブジェクト単位でのアクセス権限管理。 |
Presigned URL(事前著名付きURL) | 第三者にオブジェクトのURLを閲覧させる際に利用。 CLIやSDKで期限付きのURLを発行できる。 |
オブジェクトのアップロードと公開
|No.|操作|備考|
|---|---|---|---|
|1|バケットを作成|バケット名はグローバルでユニークにする|
|2|フォルダを作成||
|3|ファイルをアップロード||
|4|オブジェクトを公開する|オブジェクトアクション > 公開する|
|5|バケットのブロックパブリックアクセスをオフにする|バケット > アクセス許可 > ブロックパブリックアクセス (バケット設定)|
バケットのバージョニング
- バケット > プロパティ から設定
- 同じファイルを更新してアップロード → バージョン管理ができる
- 更新してアップロードしたオブジェクトは、再度公開する必要がある
- 削除バージョンを削除することで、削除を取り消せる
Intelligent-Tiering Archive
プロパティ > Intelligent-Tiering Archive 設定
Intelligent-Tiering: STANDARD, STANDARD-IA
Intelligent-Tiering Archive: Archive Access(Glacier), Deep Archive Access(Glacier Deep Archive)
イベント通知
プロパティ > イベント通知
S3のアクションをトリガーに以下サービスに連携できる。
- Lambda
- SNS
- SQS
ユースケースとしては、
オブジェクトがアップロードされたら、LambdaでファイルのメタデータをDBへ保存や、
オブジェクトが削除されたら、SNSでメール通知など。
静的ウェブサイトホスティング
S3を静的ウェブサイトとして使用したい時の設定。
|No.|操作|備考|
|---|---|---|---|
|1|プロパティ > 静的ウェブサイトホスティング||
|2|index.html と error.html を作成||
|3|No.2のファイルをアップロード||
|4|バケットポリシーを編集||
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "任意の文字列",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "バケットARN/*"
}
]
}