

# S3 インベントリを使用したデータのカタログ化と分析
<a name="storage-inventory"></a>

Amazon S3 インベントリを使用してストレージを管理できます。例えば、ビジネス、コンプライアンス、および規制上のニーズに対応して、オブジェクトのレプリケーションや暗号化のステータスを監査およびレポートするために使用できます。また、Amazon S3 同期 `List` API オペレーションのスケジュールされた代替手段として Amazon S3 インベントリを使用し、ビジネスワークフローやビッグデータジョブを簡素化、高速化できます。Amazon S3 インベントリは、`List` API オペレーションを使用してオブジェクトを監査しないため、バケットのリクエストレートには影響しません。

Amazon S3 インベントリは、カンマ区切り値 (CSV)、[Apache Optimized Row Columnar (ORC)](https://orc.apache.org/)、または [https://parquet.apache.org/](https://parquet.apache.org/) 出力ファイルを通じて、S3 バケットや共有プレフィックス (オブジェクト名の先頭が共通文字列) を持つオブジェクトについて、オブジェクトおよび対応するメタデータを毎日または毎週一覧表示します。毎週のインベントリを設定すると、最初のレポートの後は毎週日曜日 (UTC タイムゾーン) にレポートが生成されます。Amazon S3 インベントリの料金に関する詳細については、[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/) を参照してください。

1 つのバケットに対して複数のインベントリリストを設定できます。インベントリリストを設定する場合、以下を指定できます。
+ インベントリに含めるオブジェクトメタデータ
+ すべてのオブジェクトバージョンを一覧表示するか、現在のバージョンのみを一覧表示するか
+ インベントリリストファイル出力を保存する場所
+ インベントリを毎日生成するか、毎週生成するか
+ インベントリリストファイルを暗号化するかどうか

Amazon S3 インベントリを標準 SQL クエリを使用してクエリするには、[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)、[Amazon Redshift Spectrum](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html)、その他のツール ([https://prestodb.io/](https://prestodb.io/)、[https://hive.apache.org/](https://hive.apache.org/)、[https://databricks.com/spark/about/](https://databricks.com/spark/about/) など) を使用できます。Athena を使用してインベントリファイルをクエリする方法の詳細については、「[Amazon Athena で Amazon S3 インベントリをクエリする](storage-inventory-athena-query.md)」を参照してください。

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

## ソースバケットと保存先バケット
<a name="storage-inventory-buckets"></a>

インベントリでオブジェクトをリストする対象のバケットは、*ソースバケット*と呼ばれます。インベントリリストファイルを保存する先のバケットは、*保存先バケット*と呼ばれます。

**ソースバケット**

インベントリは、ソースバケットに格納されているオブジェクトをリストします。バケット全体のインベントリリストを取得することも、オブジェクトキー名のプレフィックスでリストをフィルタリングすることもできます。

ソースバケット:
+ インベントリにリストされているオブジェクトが含まれます。
+ インベントリの設定が含まれます。

**保存先バケット**

Amazon S3 インベントリリストのファイルは、保存先バケットに書き込まれます。すべてのインベントリリストファイルを保存先バケットの共通の場所にグループ化するには、インベントリ設定で保存先のプレフィックスを指定できます。

保存先バケット:
+ インベントリのファイルリストが含まれます。
+ 保存先バケットに保存されているすべてのインベントリリストファイルを一覧表示するマニフェストファイルが含まれます。詳細については、「[インベントリマニフェスト](storage-inventory-location.md#storage-inventory-location-manifest)」を参照してください。
+ バケットの所有権を検証するためのアクセス許可と、バケットにファイルを書き込むためのアクセス許可を Amazon S3 に付与する、バケットポリシーが必要です。
+ ソースバケットと同じ AWS リージョン に存在する必要があります。
+ ソースバケットと同じでもかまいません。
+ ソースバケットを所有するアカウントとは別の AWS アカウント によって所有されていてもかまいません。

## Amazon S3 インベントリのリスト
<a name="storage-inventory-contents"></a>

インベントリリストファイルには、ソースバケット内のオブジェクトのリストと、各オブジェクトのメタデータが含まれます。インベントリリストファイルは、次のいずれかの形式で保存先バケットに保存されます。
+ GZIP で圧縮された CSV ファイル
+ ZLIB で圧縮された Apache Optimized Row Columnar (ORC)
+ Snappy で圧縮された Apache Parquet ファイル

**注記**  
Amazon S3 インベントリレポートのオブジェクトのソート結果は一切保証されません。

インベントリリストファイルには、ソースバケット内のオブジェクトのリストと、リストされた各オブジェクトのメタデータが含まれます。これらのデフォルトフィールドは常に含まれます。
+ **バケット名** – インベントリ対象のバケットの名前。
+ **ETag** – エンティティタグ (ETag) は、オブジェクトのハッシュです。ETag は、変更をオブジェクトのコンテンツにのみ反映し、メタデータには反映しません。ETag は、オブジェクトデータの MD5 ダイジェストである場合があります。どちらであるかは、オブジェクトの作成方法と暗号化方法によって決まります。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html)」を参照してください。
+ **キー名** – バケット内のオブジェクトを一意に識別するオブジェクトのキー名 (またはキー)。CSV ファイル形式を使用すると、キー名は URL エンコードされるため、これをデコードしてから使用する必要があります。
+ **最終更新日** – オブジェクトの作成日または最終更新日のどちらか新しい方。
+ **サイズ** - バイト単位のオブジェクトサイズ。不完全なマルチパートアップロード、オブジェクトメタデータ、削除マーカーのサイズは含まれません。
+ **ストレージクラス** – オブジェクトの保存に使用するストレージクラス。`STANDARD`、`REDUCED_REDUNDANCY`、`STANDARD_IA`、`ONEZONE_IA`、`INTELLIGENT_TIERING`、`GLACIER`、`DEEP_ARCHIVE`、`OUTPOSTS`、`GLACIER_IR`、または `SNOW` に設定します。詳細については、「[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)」を参照してください。
**注記**  
S3 インベントリは S3 Express One Zone をサポートしていません。

レポートには、次の追加のメタデータフィールドを含めることができます。
+ **チェックサムアルゴリズム** - オブジェクトのチェックサムを作成するために使用されるアルゴリズムを示します。詳細については、「[サポートされているチェックサムアルゴリズムの使用](checking-object-integrity-upload.md#using-additional-checksums)」を参照してください。
+ **暗号化ステータス** – 使用される暗号化キーの種類に応じた、サーバー側の暗号化ステータス。Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS)、AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS)、またはお客様が指定したキーによるサーバー側の暗号化 (SSE-C) のいずれかとなります。`SSE-S3`、`SSE-KMS`、`DSSE-KMS`、`SSE-C`、または `NOT-SSE` に設定します。ステータスが `NOT-SSE` の場合、オブジェクトはサーバー側の暗号化を使用して暗号化されません。詳細については、「[暗号化によるデータの保護](UsingEncryption.md)」を参照してください。
+ **S3 Intelligent-Tiering: アクセス階層** – S3 Intelligent-Tiering ストレージクラスがオブジェクトの保存先である場合、オブジェクトのアクセス階層 (高頻度または低頻度)。`FREQUENT`、`INFREQUENT`、`ARCHIVE_INSTANT_ACCESS`、`ARCHIVE`、または `DEEP_ARCHIVE` に設定します。詳細については、「[アクセスパターンが変化する、またはアクセスパターンが不明なデータを、自動的に最適化するためのストレージクラス](storage-class-intro.md#sc-dynamic-data-access)」を参照してください。
+ **S3 オブジェクトロック: 日付までの保持期限** – ロックされたオブジェクトを削除できなくなる日付。詳細については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください。
+ **S3 オブジェクトロック: 保持モード** – ロックされたオブジェクトの `Governance` または `Compliance` に設定します。詳細については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください。
+ **S3 オブジェクトロック: リーガルホールドステータス** – リーガルホールドがオブジェクトに適用されている場合は `On` に設定します。それ以外の場合は、`Off` に設定されます。詳細については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください。
+ **バージョン ID** – オブジェクトのバージョン ID。バケットのバージョニングを有効にすると、Amazon S3 はバケットに追加されたオブジェクトにバージョン番号を割り当てます。詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。リストを現在のバージョンのオブジェクトのみに設定した場合、このフィールドは含まれません。
+ **IsLatest** – オブジェクトが現在のバージョンのオブジェクトである場合は、`True` に設定されます リストを現在のバージョンのオブジェクトのみに設定した場合、このフィールドは含まれません。
+ **削除マーカー** – オブジェクトが削除マーカーである場合は、`True` に設定されます。詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。(オブジェクトのすべてのバージョンを含めるようにレポートを設定している場合、このフィールドはレポートに自動的に追加されます)。
+ **マルチパートアップロードフラグ** – オブジェクトがマルチパートアップロードとしてアップロードされた場合は、`True` に設定されます。詳細については、「[Amazon S3 でのマルチパートアップロードを使用したオブジェクトのアップロードとコピー](mpuoverview.md)」を参照してください。
+ **オブジェクト所有者** – オブジェクトの所有者の正規ユーザー ID。詳細については、「AWS Account Management リファレンスガイド」の「[AWS の正規ユーザー ID を検索する](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId)」を参照してください。**
+ **レプリケーションステータス** — `PENDING`、`COMPLETED`、`FAILED` または `REPLICA` に設定します。詳細については、「[レプリケーションステータス情報の取得](replication-status.md)」を参照してください。
+ **S3 バケットキーステータス** — `ENABLED` または `DISABLED` に設定します。オブジェクトが SSE-KMS に S3 バケットキーを使用するかどうかを示します。詳細については、「[Amazon S3 バケットキーの使用](bucket-key.md)」を参照してください。
+ **オブジェクトアクセスコントロールリスト** — このオブジェクトへのアクセスを許可する AWS アカウントまたはグループと、許可するアクセスの種類を定義するアクセスコントロールリスト (ACL)。オブジェクト ACL フィールドは JSON 形式で定義します。S3 インベントリレポートには、ACL がバケットで無効になっている場合でも、ソースバケット内のオブジェクトに関連付けられた ACL が含まれます。詳細については、「[オブジェクト ACL フィールドの使用](objectacl.md)」および「[アクセスコントロールリスト (ACL) の概要](acl-overview.md)」を参照してください。
**注記**  
オブジェクト ACL フィールドは JSON 形式で定義します。インベントリレポートには、オブジェクト ACL フィールドの値が base64 エンコードされた文字列として表示されます。  
例えば、次のオブジェクト ACL フィールドが JSON 形式で存在するとします。  

  ```
  {
          "version": "2022-11-10",
          "status": "AVAILABLE",
          "grants": [{
              "canonicalId": "example-canonical-user-ID",
              "type": "CanonicalUser",
              "permission": "READ"
          }]
  }
  ```
オブジェクト ACL フィールドはエンコードされ、次の base64 エンコードされた文字列として表示されます。  

  ```
  eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3siY2Fub25pY2FsSWQiOiJleGFtcGxlLWNhbm9uaWNhbC11c2VyLUlEIiwidHlwZSI6IkNhbm9uaWNhbFVzZXIiLCJwZXJtaXNzaW9uIjoiUkVBRCJ9XX0=
  ```
オブジェクト ACL フィールドのデコードされた値を JSON で取得するには、Amazon Athena でこのフィールドをクエリできます。クエリの例については、「[Amazon Athena で Amazon S3 インベントリをクエリする](storage-inventory-athena-query.md)」を参照してください。
+ **ライフサイクルの有効期限** – オブジェクトのライフサイクルの有効期限タイムスタンプに設定します。このフィールドは、該当するライフサイクルルールによってオブジェクトの有効期限が切れる場合にのみ入力されます。それ以外の場合、このフィールドは空になります。詳細については、「[オブジェクトの有効期限](lifecycle-expire-general-considerations.md)」を参照してください。

**注記**  
ライフサイクル設定に基づいて、オブジェクトの存続期間が終了すると、Amazon S3 が削除キューに追加し、非同期的に削除します。そのため、有効期限が切れる日と Amazon S3 がオブジェクトを削除する日との間に遅延が生じることがあります。インベントリレポートには、有効期限が切れていてもまだ削除されていないオブジェクトが含まれます。S3 ライフサイクルの有効期限アクションの詳細については、「[オブジェクトの有効期限](lifecycle-expire-general-considerations.md)」を参照してください。

以下は、4 つのレコードで構成される追加のメタデータフィールドを含むインベントリレポートの例です。

```
amzn-s3-demo-bucket1    example-object-1    EXAMPLEDC8l.XJCENlF7LePaNIIvs001    TRUE        1500    2024-08-15T15:28:26.0004    EXAMPLE21e1518b92f3d92773570f600    STANDARD    FALSE    COMPLETED    SSE-KMS    2025-01-25T15:28:26.000Z    COMPLIANCE    Off        ENABLED        eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ==    EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7000
amzn-s3-demo-bucket1    example-object-2    EXAMPLEDC8l.XJCENlF7LePaNIIvs002    TRUE        200    2024-08-21T15:28:26.000Z    EXAMPLE21e1518b92f3d92773570f601    INTELLIGENT_TIERING    FALSE    COMPLETED    SSE-KMS    2025-01-25T15:28:26.000Z    COMPLIANCE    Off    INFREQUENT    ENABLED    SHA-256    eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ==    EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7001
amzn-s3-demo-bucket1    example-object-3    EXAMPLEDC8l.XJCENlF7LePaNIIvs003    TRUE        12500    2023-01-15T15:28:30.000Z    EXAMPLE21e1518b92f3d92773570f602    STANDARD    FALSE    REPLICA    SSE-KMS    2025-01-25T15:28:26.000Z    GOVERNANCE    On        ENABLED        eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ==    EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7002
amzn-s3-demo-bucket1    example-object-4    EXAMPLEDC8l.XJCENlF7LePaNIIvs004    TRUE        100    2021-02-15T15:28:27.000Z    EXAMPLE21e1518b92f3d92773570f603    STANDARD    FALSE    COMPLETED    SSE-KMS    2025-01-25T15:28:26.000Z    COMPLIANCE    Off        ENABLED        eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ==    EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7003
```

古いインベントリリストを削除するライフサイクルポリシーを作成することをお勧めします。詳細については、「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照してください。

`s3:PutInventoryConfiguration` アクセス許可により、ユーザーは、インベントリリストを設定するとき、各オブジェクトについて以前にリストされたすべてのメタデータフィールドを選択することと、インベントリを保存する保存先バケットを指定することの両方ができるようになります。保存先バケット内のオブジェクトへの読み取りアクセス権を持つユーザーは、インベントリリストで利用可能なすべてのオブジェクトメタデータフィールドにアクセスできます。インベントリレポートへのアクセスを制限するには、「[S3 インベントリおよび S3 分析に対するアクセス許可の付与](example-bucket-policies.md#example-bucket-policies-s3-inventory-1)」を参照してください。

### インベントリ整合性
<a name="storage-inventory-contents-consistency"></a>

すべてのオブジェクトが各インベントリリストに表示されない場合があります。インベントリリストは、`PUT` リクエスト (新しいオブジェクトと上書きの両方) および `DELETE` リクエストの結果整合性を提供します。バケットの各インベントリリストは、バケット項目のスナップショットです。これらのリストは結果的に整合します (つまり、リストには最近追加または削除されたオブジェクトが含まれない場合があります)。

オブジェクトに対してアクションを実行する前に、オブジェクトの状態を検証するには、`HeadObject` REST API リクエストを実行してオブジェクトのメタデータを取得するか、Amazon S3 コンソールでオブジェクトのプロパティを確認することをお勧めします。AWS CLI または AWS SDK でオブジェクトのメタデータを確認することもできます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)」を参照してください。

Amazon S3インベントリの使用のさらなる詳細については、以下のトピックを参照してください。

**Topics**
+ [ソースバケットと保存先バケット](#storage-inventory-buckets)
+ [Amazon S3 インベントリのリスト](#storage-inventory-contents)
+ [Amazon S3 インベントリの設定](configure-inventory.md)
+ [インベントリリストの検索](storage-inventory-location.md)
+ [インベントリ完了に関する Amazon S3 イベント通知の設定](storage-inventory-notification.md)
+ [Amazon Athena で Amazon S3 インベントリをクエリする](storage-inventory-athena-query.md)
+ [Amazon S3 インベントリレポートの空のバージョン ID 文字列を NULL 文字列に変換します。](inventory-configure-bops.md)
+ [オブジェクト ACL フィールドの使用](objectacl.md)