[レポート] STG212: S3 Batch Operationsの機能紹介 #reinvent

本記事はre:Invent 2018のセッション"STG212: Introducing S3 Batch Operations: Managing Billions of Objects in Amazon S3 at Scale"のレポートです。セッションでは、S3 Batch Operations の機能について、より細かい内容の紹介がありました。

概要

Amazon S3’s newest management feature S3 Batch Operations makes it simple to manage billions of objects with a single API request or a few clicks in the S3 Management Console. With this new feature, customers can change object properties and execute core storage management tasks across any number of their objects stored in Amazon S3. S3 Batch Operations include: copying objects between buckets, replacing tag sets, modifying access controls, applying retention dates, and restoring archived objects from Amazon Glacier. Customers can also use S3 Batch Operations to invoke AWS Lambda functions to execute more complex operations. Attend this session to learn more about S3 Batch Operations and how it can save up to 90% of time spent on managing your S3 objects at scale.

スピーカー

  • Robert Wilson - Senior Product Manager, Amazon Web Services

アジェンダ

  • Operating at scale in Amazon Simple Storage Service (S3)
  • Overview of Amazon S3 Batch Operations (preview) NEW!
  • S3 Batch Operations console demo
  • Deep Dive on S3 Batch Operations functionality
  • Common use cases

Operating at scale

S3には、大量のオブジェクトの処理に役立つ以下のような機能があります。

  • Lifecycle management
  • S3 Intelligent-Tiering storage class NEW!
  • Cross-Region replication
  • Inventory reports
  • S3 Batch Operations NEW!

ここ数日で Intelligent-Tiering ストレージクラスと S3 Batch Operations が新たに発表されました。 セッションでは Intelligent-Tiering についての紹介もありましたが、ここでは省略します。詳しくは以下の記事をご参照ください。

【アップデート】S3に新しいストレージクラス”Intelligent-Tiering”が登場しました #reinvent

以下、S3 Batch Operations の機能について、詳しく見ていきます。

Overview of Amazon S3 Batch Operations

そもそもなぜS3 Batch Operationsを作ったのか?ですが、以下のような問題に対応するため、とのことでした。

  • どうやって300TBのデータを別のバケットにコピーするのか?
  • オブジェクトへのタグの付け方は知っている。でも、それを数十億個のオブジェクトに行うにはどうやればいいのか?
  • S3 Glacierから全てのデータをリストアしなければならない時、どうやってそれをやればいいのか?

S3 Batch Operationsでの処理には、以下の3段階があります。

処理対象のオブジェクトの指定
以下の2つの形式を利用できます。

処理の指定
以下の5種類の処理を実行できます。

  • コピー
  • S3 Glacierからのリストア
  • ACLの設定
  • タグの置き換え
  • Lambda functionの実行

進捗状況の表示
以下を行うことができます。

  • オブジェクトレベルの進捗
  • ジョブの通知
  • 完了レポート

デモ

会場では実際にAWSコンソールの画面を操作するデモが行われました。 こちらがメインの画面です。バッチジョブの一覧が表示されています。ジョブ名で検索したり、ステータスで絞り込んだりできるようになっています。

"Create Job"ボタンを押すとこのような画面になります。ここでmanifest(処理対象のオブジェクトを指定するもの)とオブジェクトに対する処理を設定してジョブを作成します。

Deep Dive on S3 Batch Operations functionality

ここでは、manifest(処理対象のオブジェクトの指定)の入力項目や、実行に必要な権限、完了レポートで出力される項目など、やや細かい内容が続きました。 なおドキュメントにも多少の記載があります。

  • Manifestの作成
    • S3 inventory report, CSVの2形式
    • 入力はBucket, Key name, Version ID (optional)
  • S3 Batch Operationsはどのようにジョブを実行するのか?
    • 現存する他のAPIを呼び出す形で実行
    • 当該APIを利用するのと同じ権限が必要になる
  • 権限の設定
    • IAMロールを仮定
    • マニフェストのread権限、入力・出力バケットへの権限、完了レポートを出力する場合はその書き込み権限が必要
  • バッチ処理のカスタマイズ
    • ジョブ実行前の確認の要・不要
    • 異なるジョブの種類ごとの優先度指定
    • 完了レポートの出力範囲(全処理、失敗のみ、出力しない)
  • ジョブの管理
    • APIで可能
    • ジョブの作成
    • ジョブの確認と実行
    • ジョブの更新
    • ジョブの詳細表示
    • ジョブの一覧表示
    • ジョブのキャンセル
  • リージョンごとのリスト表示
    • アカウントレベルでジョブの状態を表示
    • ListJobs APIでリージョン内の全ジョブを表示
  • バッチ処理の実行詳細
    • ジョブが自動的に失敗となる閾値がある
    • 1000回の処理で50%以上失敗したらジョブ失敗
    • ジョブの実行速度は自動的に調節される
    • 自動リトライ
    • Lambda関数の実行レート調節可能
  • ジョブの進捗と通知
    • CloudWatch Eventsによりジョブの状態変化を通知
    • オブジェクトレベルのジョブ詳細表示
    • DescribedJob API
    • ListJobs API
    • S3マネジメントコンソール
  • 完了レポートの出力項目
    • バケット
    • キー名
    • バージョンID
    • 成功/失敗
    • ステータスコード
    • コード詳細
    • その他追加事項、または処理結果のセット

Common use cases

例えば以下のような処理に使うことが想定されます。

  • 繰り返し処理
    • オブジェクトのタグをライフサイクルポリシーに従って付け替え
    • 定期レポート作成のためのS3 Glacierからのリストア
    • AWS Lambda関数を利用したデータフォーマットの標準化
    • データのバックアップや何かのワークフローの一部としてのコピー
  • 1度きりの処理
    • オブジェクトのACL変更
    • ストレージクラスの変更(コピー)
    • データ暗号化(コピー)
    • 画像のサムネイル作成(Lambda関数)
    • 大量のデータのタグ付け

まとめ

以上、S3 Batch Operationsの細かい機能の紹介でした。 非常に便利な機能だと思います。現在previewですが、使えるようになったら色々試してみたいところです。