Amazon S3 インベントリの設定 - Amazon Simple Storage Service

Amazon S3 インベントリの設定

Amazon S3 インベントリには、定義したスケジュールに従ってオブジェクトとメタデータのフラットファイルリストが用意されています。Amazon S3 同期 List API オペレーションの代わりにスケジュールされた S3 インベントリを使用できます。S3 インベントリは、カンマ区切り値 (CSV)、Apache Optimized Row Columnar (ORC)、または Apache Parquet (Parquet) 出力ファイルを使用して、オブジェクトおよび対応するメタデータを一覧表示します。

S3 インベントリは、S3 バケットまたはプレフィックスを共有するオブジェクト (つまり、名前の先頭が同じ文字列のオブジェクト) に関して、インベントリリストが用意されています。詳細については、「Amazon S3 インベントリ」を参照してください。

このセクションでは、インベントリのソースバケットと保存先バケットに関する詳細を含め、インベントリを設定する方法について説明します。

概要

Amazon S3 インベントリは、定義したスケジュールで S3 バケット内のオブジェクトのリストを作成し、ストレージの管理に役立ちます。1 つのバケットに対して複数のインベントリリストを設定できます。インベントリリストは、保存先バケットの CSV、ORC、または Parquet ファイルに発行されます。

インベントリを設定する最も簡単な方法は、Amazon S3 を使用することですが、REST API、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用することもできます。コンソールは、次の手順の最初のステップを実行します。保存先バケットへのバケットポリシーの追加。

S3 バケットの Amazon S3 インベントリをセットアップする方法

  1. 保存先バケットのバケットポリシーを追加します。

    定義された場所のバケットにオブジェクトを書き込むアクセス許可を Amazon S3 に付与するバケットポリシーを保存先バケットに作成する必要があります。ポリシーの例については、「S3 インベントリおよび S3 分析に対するアクセス許可の付与」を参照してください。

  2. ソースバケットのオブジェクトをリストして保存先バケットにリストを発行するようにインベントリを設定します。

    ソースバケットのインベントリリストを設定するときは、リストを保存する保存先バケットと、リストを毎日または毎週のどちらで生成したいかを、指定します。また、すべてのオブジェクトバージョンまたは現在のバージョンだけのどちらをリストするか、どのオブジェクトメタデータを含めるかも設定できます。

    S3 インベントリレポート設定の一部のオブジェクトメタデータフィールドはオプションです。つまり、デフォルトで使用できますが、ユーザーに s3:PutInventoryConfiguration アクセス許可を付与すると制限できます。s3:InventoryAccessibleOptionalFields 条件キーを使用して、ユーザーがこれらのオプションのメタデータフィールドをレポートに含めることができるかどうかを制御できます。

    S3 インベントリで使用できるオプションのメタデータフィールドの詳細については、「Amazon Simple Storage Service API リファレンス」の「OptionalFields」を参照してください。インベントリ設定の特定のオプションのメタデータフィールドへのアクセスを制限する方法についての詳細は、「S3 インベントリレポート設定の作成を制御する」を参照してください。

    Amazon S3 マネージド キー (SSE-S3) または AWS Key Management Service (AWS KMS) カスタマーマネージドキー (SSE-KMS) を使用したサーバー側の暗号化により、インベントリリストファイルを暗号化するように指定できます。

    注記

    AWS マネージドキー(aws/s3) は S3 インベントリでの SSE-KMS 暗号化ではサポートされていません。

    SSE-S3 および SSE-KMS に関する詳細は、「サーバー側の暗号化によるデータの保護」を参照してください。SSE-KMS 暗号化を使用する場合は、ステップ 3 を参照してください。

  3. SSE-KMS を使用してインベントリリストファイルを暗号化するには、AWS KMS key を使用するための許可を Amazon S3 に付与します

    Amazon S3 REST API、AWS CLI、または AWS SDK を使用してインベントリリストファイルの暗号化を設定することができます。どちらの方法を選択しても、 カスタマーマネージドキーを使用してインベントリファイルを暗号化する許可を Amazon S3 に付与する必要があります。Amazon S3 に許可を付与するには、インベントリファイルの暗号化に使用するカスタマーマネージドキーのキーポリシーを変更します。詳細については、「カスタマーマネージドキーを暗号化に使用するためのアクセス許可を Amazon S3 に付与する」を参照してください。

    インベントリリストファイルを保存する先のバケットは、ソースバケットを所有するアカウントとは異なる AWS アカウントが所有している場合があります。Amazon S3 インベントリのクロスアカウントオペレーションで SSE-KMS 暗号化を使用する場合は、S3 インベントリの設定時に、完全修飾された KMS キー ARN を使用することをお勧めします。詳細については、「Amazon Simple Storage Service API リファレンス」の「クロスアカウント操作での SSE-KMS 暗号化の使用」と「ServerSideEncryptionByDefault」を参照してください。

ターゲットバケットポリシーの作成

Amazon S3 コンソールを使用してインベントリ設定を作成する場合、Amazon S3 は、バケットへの書き込みアクセス許可を Amazon S3 に付与するバケットポリシーを、保存先バケットに自動的に作成します。ただし、AWS CLI、AWS SDK、または Amazon S3 REST API を使用してインベントリ設定を作成する場合は、バケットポリシーを保存先バケットに手動で追加する必要があります。詳細については、「S3 インベントリおよび S3 分析に対するアクセス許可の付与」を参照してください。S3 インベントリの送信先バケットポリシーにより、Amazon S3 がインベントリレポートのデータをバケットに書き込むことができるようになります。

バケットポリシーを作成しようとしたときにエラーが発生した場合、解決するための手順が表示されます。例えば、別の AWS アカウント 内のターゲットバケットを選択したが、バケットポリシーの読み書きを行う許可がない場合、次のエラーメッセージが表示されます。

この場合、ターゲットバケットの所有者は、バケットポリシーをターゲットバケットに追加する必要があります。ポリシーがターゲットバケットに追加されない場合、Amazon S3 にはターゲットバケットに書き込むアクセス許可がないため、インベントリレポートを取得できません。ソースバケットが現在のユーザー以外のアカウントによって所有されている場合、ポリシーでソースバケット所有者の正しいアカウント ID に置き換える必要があります。

カスタマーマネージドキーを暗号化に使用するためのアクセス許可を Amazon S3 に付与する

AWS Key Management Service (AWS KMS) カスタマーマネージドキーを使用して暗号化する許可を Amazon S3 に付与するには、キーポリシーを使用する必要があります。カスタマーマネージドキーを使用できるようにキーポリシーを更新するには、次の手順に従います。

カスタマーマネージドキーを使用して暗号化するアクセス許可を Amazon S3 に付与するには
  1. カスタマーマネージドキーを所有する AWS アカウント を使用して、AWS Management Console にサインインします。

  2. AWS KMS コンソール (https://console.aws.amazon.com/kms) を開きます。

  3. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  4. 左のナビゲーションペインで、[Customer managed keys ] を選択します。

  5. [カスタマーマネージドキー] で、インベントリファイルの暗号化に使用するカスタマーマネージドキーを選択します。

  6. [Key Policy] (キーポリシー) セクションで、[Switch to policy view] (ポリシービューへの切り替え) を選択します。

  7. [編集] をクリックし、キーポリシーを更新します。

  8. [キーポリシーの編集] ページで、既存のキーポリシーに以下の行を追加します。source-account-id および DOC-EXAMPLE-SOURCE-BUCKET として、ユースケースに応じた値を入力します。

    { "Sid": "Allow Amazon S3 use of the customer managed key", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey" ], "Resource": "*", "Condition":{ "StringEquals":{ "aws:SourceAccount":"source-account-id" }, "ArnLike":{ "aws:SourceARN": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET" } } }
  9. [Save changes] (変更の保存) をクリックします。

カスタマーマネージドキーの作成とキーポリシーの使用の詳細については、AWS Key Management Service デベロッパーガイドの次のリンクを参照してください。

S3 コンソールを使用したインベントリの設定

S3 コンソールを使用してインベントリを設定するには、次の手順を使用します。

注記

Amazon S3 が最初のインベントリレポートを配信するまでに最大 48 時間かかることがあります。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 左側のナビゲーションペインで、[バケット] を選択します。[バケット] リストで、Amazon S3 インベントリを設定する対象のバケットの名前を選択します。

  3. [Management (管理)] タブを選択します。

  4. [インベントリ設定] で、[インベントリ設定の作成] を選択します。

  5. [インベントリ設定名] に、名前を入力します。

  6. [インベントリスコープ] で、次の操作を行います。

    • オプションのプレフィックスを入力します。

    • 含めるオブジェクトバージョンとして、[現在のバージョンのみ] または [すべてのバージョンを含める] のどちらかを選択します。

  7. [Report details] (レポートの詳細) で、[This account] (このアカウント) または [A different account] (別のアカウント) のいずれかを、レポートを保存する AWS アカウント の場所として選択します。

  8. [保存先] で、インベントリレポートを保存する先のバケットを選択します。

    ターゲットバケットは、インベントリをセットアップするバケットと同じ AWS リージョン にある必要があります。ターゲットバケットは、別の AWS アカウント にある場合があります。保存先バケットを指定するときに、インベントリレポートをグループ化するためのオプションのプレフィックスを含めることもできます。

    [送信先] バケットフィールドの下に、[送信先バケットのアクセス許可] と表示されます。このアクセス許可を送信先バケットポリシーに追加し、Amazon S3 がバケットにデータを配置できるようにします。詳細については、「ターゲットバケットポリシーの作成」を参照してください。

  9. [頻度] の下で、レポートを生成する頻度として、[毎日] または [毎週] を選択します。

  10. [出力形式] で、レポートの形式を以下から 1 つ選択します。

    • CSV — このインベントリレポートを S3 バッチオペレーションで使用するか、このレポートを Microsoft Excel などの別のツールで分析する場合は、[CSV] を選択します。

    • Apache ORC

    • Apache Parquet

  11. [ステータス] の下で、[有効化] または [無効化] を選択します。

  12. サーバー側の暗号化を設定するには、[インベントリ レポートの暗号化] で次の手順に従います。

    1. [サーバー側の暗号化] で、[暗号化キーを指定しない] または [暗号化キーを指定する] を選択してデータを暗号化します。

      • Amazon S3 にオブジェクトを格納するときに、バケット設定をデフォルトのサーバー側暗号化のままにするには、[暗号化キーを指定しない] を選択します。送信先バケットで S3 バケットキーが有効になっている限り、コピーオペレーションは送信先バケットに S3 バケットキーを適用します。

        注記

        指定された宛先のバケットポリシーで、Amazon S3 に保存する前にオブジェクトを暗号化する必要がある場合は、[暗号化キーを指定する] を選択する必要があります。そうしないと、宛先へのオブジェクトのコピーが失敗します。

      • オブジェクトを Amazon S3 に保存する前に暗号化するには、[暗号化キーを指定する] を選択します。

    2. [暗号化キーを指定する] を選択した場合は、[暗号化タイプ][Amazon S3 マネージドキー (SSE-S3)] または [AWS Key Management Service キー (SSE-KMS)] を選択する必要があります。

      SSE-S3 は、最強のブロック暗号の 1 つである 256 ビットの 高度暗号化規格 (AES-256) を使用して、各オブジェクトを暗号化します。SSE-KMS を使用すると、キーをより細かく制御できます。SSE-KMS に関する詳細は、「Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)」を参照してください。SSE-KMS に関する詳細は、「AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用」を参照してください。

      注記

      SSE-KMS を使用してインベントリリストファイルを暗号化するには、カスタマーマネージドキーを使用するためのアクセス許可を Amazon S3 に付与する必要があります。手順については、「KMS キーを使用した暗号化のための Amazon S3 への許可の付与」を参照してください。

    3. [AWS Key Management Service キー (SSE-KMS)] を選択した場合は、AWS KMS key で、以下のオプションのいずれかを使用して AWS KMS キーを指定できます。

      注記

      インベントリリストファイルを保存する送信先バケットが別の AWS アカウント によって所有されている場合は、完全修飾 KMS キー ARN を使用して KMS キーを指定するようにしてください。

      • 使用可能な KMS キーのリストから選択するには、[AWS KMS キーから選択する] を選択し、使用可能なキーのリストから対称暗号化 KMS キーを選択します。KMS キーがバケットと同じリージョンにあることを確認します。

        注記

        AWS マネージドキー (aws/s3) とカスタマーマネージドキーの両方がリストに表示されます。ただし、AWS マネージドキー (aws/s3) は S3 インベントリでの SSE-KMS 暗号化には対応していません。

      • KMS キー ARN を入力するには、[AWS KMS キー ARN を入力] を選択し、表示されるフィールドに KMS キー ARN を入力します。

      • AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、[KMS キーを作成] を選択します。

  13. [追加のメタデータフィールド] で、インベントリレポートに追加するフィールドを以下から 1 つ以上選択します。

    • サイズ - バイト単位のオブジェクトサイズ。不完全なマルチパートアップロード、オブジェクトメタデータ、削除マーカーのサイズは含まれません。

    • 最終更新日 – オブジェクトの作成日または最終更新日のどちらか新しい方。

    • [マルチパートアップロード] – オブジェクトがマルチパートアップロードとしてアップロードされたことを指定します。詳細については、「マルチパートアップロードを使用したオブジェクトのアップロードとコピー」を参照してください。

    • [レプリケーションステータス] – オブジェクトのレプリケーションステータス。詳細については、「レプリケーションステータス情報の取得」を参照してください。

    • 暗号化ステータス – オブジェクトの暗号化に使用するサーバー側の暗号化タイプ。詳細については、「サーバー側の暗号化によるデータの保護」を参照してください。

    • バケットキーのステータス — AWS KMS で生成したバケットレベルのキーをオブジェクトに適用するかどうかを示します。詳細については、「Amazon S3 バケットキーを使用した SSE−KMS のコストの削減」を参照してください。

    • オブジェクトアクセスコントロールリスト — このオブジェクトへのアクセスを許可する AWS アカウントまたはグループと、許可するアクセスのタイプを定義するオブジェクトごとのアクセスコントロールリスト (ACL)。このフィールドの詳細については、「オブジェクト ACL フィールドの使用」を参照してください。ACL の詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。

    • オブジェクト所有者 — オブジェクトの所有者。

    • ストレージクラス – オブジェクトの保存に使用するストレージクラス。

    • インテリジェントな階層化: アクセス階層 – S3 Intelligent-Tiering ストレージクラスがオブジェクトの保存先である場合、オブジェクトのアクセス階層 (高頻度または低頻度) を示します。詳細については、「アクセスパターンが変化する、またはアクセスパターンが不明なデータを、自動的に最適化するためのストレージクラス」を参照してください。

    • ETag – エンティティタグ (ETag) は、オブジェクトのハッシュです。ETag は、変更をオブジェクトのコンテンツにのみ反映し、そのメタデータには反映しません。ETag は、オブジェクトデータの MD5 ダイジェストである場合と、そうでない場合があります。どちらであるかは、オブジェクトの作成方法と暗号化方法によって決まります。詳細については、「Amazon Simple Storage Service API リファレンス」の「Object」を参照してください。

    • チェックサムアルゴリズム — オブジェクトのチェックサムを作成するために使用されるアルゴリズムを示します。

    • [すべてのオブジェクトロック設定] – オブジェクトのオブジェクトロックステータス (以下の設定が含まれます)。

      • オブジェクトロック: 保持モード – オブジェクトに適用される保護のレベル ([ガバナンス] または [コンプライアンス])。

      • オブジェクトロック: 日付までの保持期限 – ロックされたオブジェクトを削除できなくなる日付。

      • [オブジェクトロック: リーガルホールドステータス] – ロックされたオブジェクトのリーガルホールドステータス。

      S3 オブジェクトロックの詳細については、「S3 オブジェクトロックの仕組み」を参照してください。

    インベントリレポートの内容の詳細については、「Amazon S3 インベントリのリスト」を参照してください。

    インベントリ設定の特定のオプションのメタデータフィールドへのアクセスを制限する方法についての詳細は、「S3 インベントリレポート設定の作成を制御する」を参照してください。

  14. [Create] (作成) を選択します。

インベントリリストが発行されると、Amazon S3 Select を使用してインベントリリストファイルにクエリを実行できます。Amazon S3 Select を使用してインベントリリストを見つけ、インベントリリストファイルにクエリを実行する方法の詳細については、「インベントリリストの検索」を参照してください。

REST API を使用して S3 インベントリを操作する

次に示すのは、Amazon S3 インベントリの操作に使用できる REST オペレーションです。