🦈

AWS SAP-C02 対策 S3編

2023/03/06に公開

概要

AWS 認定試験 SAP-C02 合格記念にノートを晒します。
S3が絡む問題は頻出なので、覚えておくとよいです。

S3ストレージクラス早見表

ストレージクラス アクセス頻度 データ取得時間 データの重要度
標準(Standard) 高い ミリ秒 高い
標準-低頻度アクセス(Standard-IA) 低い ミリ秒 高い
1ゾーン-低頻度アクセス(One Zone-IA) 低い ミリ秒 低い
Intelligent-Tiering 変動する ミリ秒 高い
Glacier Instant Retrieval ほぼない ミリ秒 高い
Glacier Flexible Retrieval(旧 S3 Glacier) ほぼない 1分〜12時間 高い
Glacier Deep Archive ほぼない 12〜48 時間 高い

https://aws.amazon.com/jp/s3/storage-classes/

S3データ取得オプション

Glacierの細かな数字まで覚えておくと安心です。

ストレージクラス Expedited(迅速) Standard Bulk(一括)
Glacier Flexible Retrieval(旧 S3 Glacier) 1~5 分 3~5 時間 5~12 時間
S3 Glacier Deep Archive 利用不可 12 時間以内 48 時間以内

S3の料金

S3の料金は、下記で構成されます。

1年間のストレージ料金 + リクエスト料金 + データ取り出し料金 + データ転送料金

S3のクラスによって、データ転送料金以外の3つの単価が異なるので、データ特性にあったストレージクラスを選ぶことがコスト削減につながります。

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

最小ストレージ期間料金

最小ストレージ期間が満了する前にオブジェクトを削除した場合、日割りで按分された早期削除料金が発生します。

ストレージクラス 最小ストレージ期間
Glacier Deep Archive 180日間
Glacier (Deep Archive以外) 90日間
低頻度アクセス(IA) 30日間
その他 なし

Intelligent-Tiering

Intelligent-Tieringは、アクセス頻度によって、オブジェクトを自動で階層分けしてくれるストレージクラスです。
30日間リクエストのないオブジェクトが自動で低頻度アクセス階層へ移動します。逆に、リクエストがあると、高頻度アクセス階層へ移動します。
つまり、アクセス頻度が変化する場合や、予測できない場合にコスト効率がよくなる可能性があります。
別途、モニタリングコストとしてオブジェクト 1,000 件あたり 0.0025USD 発生します。試験で問われることは恐らく無いですが、実務でS3のクラス選択をする際には念頭に置いておきましょう。

S3リクエスタ支払い

S3料金のうち、リクエスト料金とデータ転送料金をリクエストした側のアカウントに請求する設定のこと。有効にした場合、AWSアカウント以外からのアクセスができなくなります。
リクエストする側は、課金されることを了承している旨を示すため、リクエストのヘッダーにx-amz-request-payerを含める必要があります。

レプリケーション

異なるアカウント、異なるリージョンにもレプリケート(自動・非同期的にコピー)できます。

S3 Replication Time Control (S3 RTC)

有効にすることで、ほとんどのオブジェクトは数秒、99.99%のオブジェクトは15分以内にレプリケートされます。15分の閾値を超えた場合と、15分の閾値経過後にレプリケートされたオブジェクトのイベント通知を作成できます。

パフォーマンス

マルチパートアップロード

マルチパートアップロードはAPIとして提供されており、オブジェクトを複数のパートに分けて並列アップロードできます。スループットの向上、アップロードの一時停止・再開ができる、などのメリットがあります。

そもそも、S3では、アップロード方法によって、扱えるサイズが決まっています。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/upload-objects.html

そのため、例えば、CLIで巨大なサイズのファイルをアップロードしようとした場合、裏では勝手にマルチアップロードが実行されています。なので、利用自体は無料です(データ転送料金はもちろん発生する)。

料金という観点では、アップロードが完了せずに不完全な状態で残ってしまった場合でも、ストレージ料金の対象になってしまうという問題があります。しかし、これはライフサイクルポリシーで自動削除の設定をすることで簡単に対処できます。

S3 Transfer Acceleration

有効にすることで、全世界のエッジロケーション経由でデータ転送ができます。
S3バケットを利用するアプリケーション側では、Transfer Acceleration専用のエンドポイントを指定する必要があります。

暗号化

すべてのバケットに対して、基本レベルの暗号化として、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) が適用されます。
SSE-S3暗号化では、各S3オブジェクトが、強力な多要素暗号化を使用する一意のデータキーで暗号化されます。

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/UsingServerSideEncryption.html

ネットワーク

VPCエンドポイントを利用してアクセスします。
VPCエンドポイントには下記の2種類が存在し、それぞれS3に対応しています。

  • ゲートウェイエンドポイント
    • 無料
    • オンプレミスや別リージョンからのアクセスは不可
  • インターフェイスエンドポイント(AWS PrivateLink)
    • 有料
    • オンプレミスや別リージョンからのアクセスが可能

よって、同一VPC内からのアクセスであれば無料のゲートウェイエンドポイント、オンプレミスや別リージョンからのアクセスの場合、インターフェイスエンドポイントを利用します。

S3バッチオペレーション

オペレーション 補足内容
オブジェクトのコピー 異なるリージョンのバケットにもコピー可能
Lambda関数のコール -
オブジェクトのすべてのタグの置換 すべてが対象なので、既存のタグは保持されない
オブジェクトのすべてのタグの削除 -
アクセスコントロールリスト[1]の置換 -
オブジェクトの復元 Glacier にアーカイブされたオブジェクトの復元
オブジェクトロック[2]の保持 保持期間を一括設定
オブジェクトロックのリーガルホールド[3] 有効化・解除の一括設定
脚注
  1. ACLは使わず、バケットポリシーやパブリックアクセスブロックでアクセス制御する形が一般的 ↩︎

  2. 削除または上書きを防止する機能 ↩︎

  3. 無期限のロック ↩︎

GitHubで編集を提案

Discussion