[レポート] Amazon S3 のベストプラクティス #STG302 #reinvent
はじめに
みなさま Xin chao !
本記事は、AWS re:Invent 2019 のセッション 「STG302 Best practices for Amazon S3 (including storage classes) ft. Instructure」 のレポートです。
セッション概要
セッション概要を和訳したものです。
Amazon Simple Storage Service (Amazon S3) のセキュリティ、データ保護、ストレージ管理、コスト最適化などのベストプラクティスを学びます。 このセッションでは、Amazon S3 内の大量のデータを管理するための一般的な Amazon S3 のユースケースと方法について説明します。 最新の機能強化と、各機能の使用開始方法の詳細をご覧ください。 また、ストレージ環境を監視および視覚化する方法についても説明します。
スピーカー
- Rob Wilson - Technical Product Manager, Amazon Web Services
- Shikha Sukumaran - Software Development Manager, Amazon Web Services
- Matt Wheeler - Site Reliability Engineer, Data & Analytics, Instructure
レポート
アジェンダ
- Amazon S3 の概要
- ストレージクラス, コスト最適化, パフォーマンス
- セキュリティ
- 大規模なオブジェクトの管理
- データ保護
- 監視と可視性
Amazon S3 の概要
Amazon S3 のメリット
- 耐久性
- セキュリティ
- 管理性
- パフォーマンス
- スケーラビリティ
- 可用性
様々なデータを格納可能
- ログファイル
- メディア資産
- データレイク
- IoT センサーデータ
- モバイルとの同期データ
- ML トレーニングデータ
- ユーザーが生成するコンテンツ など
S3 への様々なデータ転送手法
- AWS Direct Connect
- Amazon Kinesis Data Firehose
- Amazon Kinesis Data Stream
- Amazon S3 Transfer Acceleration
- AWS Storage Gateway
- AWS Snowball
- AWS Snowball Edge
- AWS DataSync
- AWS SFTP
ストレージクラス, コスト最適化, パフォーマンス
2006年と 2019年を比較すると、1 GB あたりのストレージ利用料の値下げ率は 80 % を超えている。
その間に行われたイノベーションの革新。 アクセス頻度と担保する可用性をもとに、適切なストレージクラスを選択する。
- 2006年 S3 標準
- 2012年 S3 Glacier
- 2015年 S3 標準 - 低頻度アクセス (IA)
- 2018年 S3 標準 1 ゾーン - 低頻度アクセス (IA)
- 2018年 S3 Intelligent-Tiering
- 2019年 S3 Glacier Deep Archive
Amazon S3 Intelligent-Tiering
- アクセスパターンを変更することで、データのストレージコストを自動的に最適化する
- 高頻度 アクセスに最適化された階層と、低頻度アクセスに最適化された階層の 2 階層に分けて、オブジェクトを保存する
- アクセスパターンを監視し、詳細なオブジェクトレベルでコストを最適化する
- アクセスパターンの監視は、バケット, プリフィックス, オブジェクトタグでフィルター可能
- パフォーマンスへの影響と運用のオーバーヘッドなしに、自動的にコストを最適化してくれる
あらゆる規模のお客様、事実上すべての業界のお客様が S3 Intelligent Tiering を使用し、ストレージコストを自動的に抑える。
ライフサイクルポリシーがルールを使用してストレージを管理する
ライフサイクルルールは、オブジェクトの保存期間に応じてアクションを実行する。
例)
- 30 日より古いオブジェクトは S3 標準 - 低頻度アクセス に移動される
- 365 日より古いオブジェクトは S3 Glacier Deep Archive に移動される
ライフサイクルポリシーとオブジェクトタグの併用
過渡期または期限切れのオブジェクトに対し、タグフィルターを指定する
大規模なオブジェクトタグの適用に、S3 バッチオペレーションを使用する
例)
- 過渡期のすべてのオブジェクトに "Project : Delta" を適用し、S3 Glacier に移動する
Amazon S3 におけるパフォーマンスベストプラクティス
最新の AWS SDK を使用して、以下によるパフォーマンスの向上が見えるようにする。
- 自動的な再試行
- タイムアウトの処理
- TransferManager を使用した並列的なアップロードとダウンロード
セキュリティ
セキュリティはすべての中核
S3 に保管されたデータは、既定でセキュアな状態にある。
- パブリックアクセスの遮断
- デフォルト暗号化
- S3 インベントリ内の暗号化ステータス
- バケットのパーミッションチェック
- AWS Trusted Advisor による無料のチェック
アクセス制御のレイヤー
リソースベース
- オブジェクトアクセス制御 (ACL)
- バケットアクセス制御 (ACL)
- バケットポリシー
ユーザーベース
- IAM ポリシー
バケットポリシーと IAM ポリシーを使用することが推奨されている。
パブリックアクセスの遮断
- アカウントまたはバケットに対して適用可能
- パブリックアクセスを拒否するための 4 つの設定
- AWS Organization サービスコントロールポリシー (=SCP) による設定変更の禁止
デフォルト暗号化
- バケットレベルでの 1 度の設定
- すべての新規オブジェクトは自動的に暗号化される
- 簡素化されたコンプライアンス
- SSE-S3 および SSE-KMS のサポート
S3 の暗号化に対応していないアプリケーションに対する保存時の暗号化をサポート。
Access Analyzer for Amazon S3 バケット (re:Invent 2019 で発表された新機能)
- 継続的な分析
- インサイトの提供
- 迅速な復旧
Amazon S3 アクセスポイントのご紹介 (re:Invent 2019 で発表された新機能)
- データレイクなどの大きな共有バケットに対するシンプルなアクセス制御
- マルチテナント用のバケットにアクセスするアプリケーションは、カスタムポリシーを付与した専有のアクセスポイントを利用できる
- VPC 内からのアクセスのみ許可されるように設定可能 (インターネットからのリクエストは許可しない)
- VPC アクセスポイントは、インターネットからのリクエストを許可しない。
- S3 は指定された VPC へのトラフィックを制限する。
Amazon S3 Access Point とは?
- バケット内のオブジェクトにアクセスするために、アプリケーションが使用する
- 特定された VPC に制限可能
- 固有ののパブリック IP アドレスのブロック設定が可能
- アクセスポイント名は、アカウントとリージョンに固有のプライベートな名前空間に存在
- ARN とホスト名に、アカウント ID とリージョンが埋め込まれている
ユースケース
- 共有バケットへのシンプルなアクセス制御
- VPC のみのデータアクセス権限を強制
大規模なオブジェクトの管理
- Amazon S3 インベントリーの活用
- S3 インベントリーリポートをフィルターするための Amazon Athena の設定
- Amazon S3 バッチオペレーションの活用
データ保護
S3 データ保護の機能
コンプライアンス準拠のためのレプリケーション、および、bad actor 保護 → S3 Replication with Time Control および所有者の更新
不慮の事故からの保護 → ライフサイクルポリシーでコストを削減しながらバケットのバージョニングを使用
ガバナンスおよびコンプライアンスを目的としたデータの保護 → S3 オブジェクトロックを使用し、write-once-read-many (WORM) になるように格納する
監視と可視性
CloudWatch による監視および可視性の提供
さいごに
以上、「STG302 Best practices for Amazon S3 (including storage classes) ft. Instructure」のセッション概要でした。
もし、このブログを読んで内容に興味を持っていただいた方は、いずれ掲載されるであろう、本セッションの動画もぜひご覧になってください。