[レポート] Amazon S3 のベストプラクティス #STG302 #reinvent

本記事は、AWS re:Invent 2019 のセッション 「STG302 Best practices for Amazon S3 (including storage classes) ft. Instructure」 のレポートです。
2019.12.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

みなさま 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」のセッション概要でした。

もし、このブログを読んで内容に興味を持っていただいた方は、いずれ掲載されるであろう、本セッションの動画もぜひご覧になってください。