

# 查找清单列表
<a name="storage-inventory-location"></a>

在清单列表发布后，Manifest 文件将发布到目标存储桶中的以下位置。

```
destination-prefix/amzn-s3-demo-source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json
 destination-prefix/amzn-s3-demo-source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.checksum
 destination-prefix/amzn-s3-demo-source-bucket/config-ID/hive/dt=YYYY-MM-DD-HH-MM/symlink.txt
```
+ `destination-prefix` 是对象键名称前缀，可以选择在资源清单配置中指定。您可以使用此前缀对目标存储桶内公共位置中的所有清单列表文件进行分组。
+ `amzn-s3-demo-source-bucket` 是清单列表所针对的源存储桶。添加源存储桶名称是为了防止在将不同源存储桶中的多个清单报告发送到同一目标存储桶时发生冲突。
+ 为防止从同一源存储桶发送到同一目标存储桶的多个清单报告发生冲突，添加了 `config-ID`。`config-ID` 来自清单报告配置，是在设置过程中定义的报告的名称。
+ `YYYY-MM-DDTHH-MMZ` 是时间戳，包含清单报告生成过程开始扫描存储桶的开始时间和日期；例如，`2016-11-06T21-32Z`。
+ `manifest.json` 是 Manifest 文件。
+ `manifest.checksum` 是 `manifest.json` 文件内容的 MD5 哈希。
+ `symlink.txt` 是 Apache Hive 兼容的清单文件。

清单列表每天或每周发布到目标存储桶中的以下位置。

```
destination-prefix/amzn-s3-demo-source-bucket/config-ID/data/example-file-name.csv.gz
...
destination-prefix/amzn-s3-demo-source-bucket/config-ID/data/example-file-name-1.csv.gz
```
+ `destination-prefix` 是对象键名称前缀，可以选择在资源清单配置中指定。您可以使用此前缀对目标存储桶内公共位置中的所有清单列表文件进行分组。
+ `amzn-s3-demo-source-bucket` 是清单列表所针对的源存储桶。添加源存储桶名称是为了防止在将不同源存储桶中的多个清单报告发送到同一目标存储桶时发生冲突。
+ `example-file-name``.csv.gz` 是 CSV 清单文件之一。ORC 清单名称以文件扩展名 `.orc` 结尾，Parquet 清单名称以文件扩展名 `.parquet` 结尾。

## 清单 Manifest
<a name="storage-inventory-location-manifest"></a>

Manifest 文件 `manifest.json` 和 `symlink.txt` 描述清单文件的位置。每次交付新的清单列表时，它均带有一组新的 Manifest 文件。这些文件可能会互相覆盖。在启用了版本控制的存储桶中，Amazon S3 会创建清单文件的新版本。

`manifest.json` 文件中包含的每个 Manifest 均提供了有关清单的元数据和其他基本信息。这些信息包含：
+ 源存储桶名称
+ 目标存储桶名称
+ 清单的版本
+ 采用纪元日期格式的创建时间戳，包含清单报告生成过程开始扫描存储桶的开始时间和日期
+ 清单文件的格式和架构
+ 目标存储桶中清单文件的列表

每当写入 `manifest.json` 文件后，它都会附带一个 `manifest.checksum` 文件（作为 `manifest.json` 文件内容的 MD5 哈希）。

**Example `manifest.json` 文件中的清单 Manifest**  
以下示例显示了采用 CSV、ORC 和 Parquet 格式的清单的 `manifest.json` 文件中的清单列表。  
下面是 CSV 格式清单的 `manifest.json` 文件中的 Manifest 示例。  

```
{
    "sourceBucket": "amzn-s3-demo-source-bucket",
    "destinationBucket": "arn:aws:s3:::example-inventory-destination-bucket",
    "version": "2016-11-30",
    "creationTimestamp" : "1514944800000",
    "fileFormat": "CSV",
    "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, Size, LastModifiedDate, ETag, StorageClass, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier, BucketKeyStatus, ChecksumAlgorithm, ObjectAccessControlList, ObjectOwner",
    "files": [
        {
            "key": "Inventory/amzn-s3-demo-source-bucket/2016-11-06T21-32Z/files/939c6d46-85a9-4ba8-87bd-9db705a579ce.csv.gz",
            "size": 2147483647,
            "MD5checksum": "f11166069f1990abeb9c97ace9cdfabc"
        }
    ]
}
```
下面是 ORC 格式清单的 `manifest.json` 文件中的 Manifest 示例。  

```
{
    "sourceBucket": "amzn-s3-demo-source-bucket",
    "destinationBucket": "arn:aws:s3:::example-destination-bucket",
    "version": "2016-11-30",
    "creationTimestamp" : "1514944800000",
    "fileFormat": "ORC",
    "fileSchema": "struct<bucket:string,key:string,version_id:string,is_latest:boolean,is_delete_marker:boolean,size:bigint,last_modified_date:timestamp,e_tag:string,storage_class:string,is_multipart_uploaded:boolean,replication_status:string,encryption_status:string,object_lock_retain_until_date:timestamp,object_lock_mode:string,object_lock_legal_hold_status:string,intelligent_tiering_access_tier:string,bucket_key_status:string,checksum_algorithm:string,object_access_control_list:string,object_owner:string>",
    "files": [
        {
            "key": "inventory/amzn-s3-demo-source-bucket/data/d794c570-95bb-4271-9128-26023c8b4900.orc",
            "size": 56291,
            "MD5checksum": "5925f4e78e1695c2d020b9f6eexample"
        }
    ]
}
```
下面是 `manifest.json` 格式清单的 Parquet 文件中的清单示例。  

```
{
    "sourceBucket": "amzn-s3-demo-source-bucket",
    "destinationBucket": "arn:aws:s3:::example-destination-bucket",
    "version": "2016-11-30",
    "creationTimestamp" : "1514944800000",
    "fileFormat": "Parquet",
    "fileSchema": "message s3.inventory { required binary bucket (UTF8); required binary key (UTF8); optional binary version_id (UTF8); optional boolean is_latest; optional boolean is_delete_marker; optional int64 size; optional int64 last_modified_date (TIMESTAMP_MILLIS); optional binary e_tag (UTF8); optional binary storage_class (UTF8); optional boolean is_multipart_uploaded; optional binary replication_status (UTF8); optional binary encryption_status (UTF8); optional int64 object_lock_retain_until_date (TIMESTAMP_MILLIS); optional binary object_lock_mode (UTF8); optional binary object_lock_legal_hold_status (UTF8); optional binary intelligent_tiering_access_tier (UTF8); optional binary bucket_key_status (UTF8); optional binary checksum_algorithm (UTF8); optional binary object_access_control_list (UTF8); optional binary object_owner (UTF8);}",
    "files": [
        {
           "key": "inventory/amzn-s3-demo-source-bucket/data/d754c470-85bb-4255-9218-47023c8b4910.parquet",
            "size": 56291,
            "MD5checksum": "5825f2e18e1695c2d030b9f6eexample"
        }
    ]
}
```
`symlink.txt` 文件是一个与 Apache Hive 兼容的清单文件，它使 Hive 能够自动发现清单文件及其关联的数据文件。与 Hive 兼容的清单文件可以与 Hive 兼容的服务 Athena 和 Amazon Redshift Spectrum 一起使用。它还可用于与 Hive 兼容的应用程序，包括 [https://prestodb.io/](https://prestodb.io/)、[https://hive.apache.org/](https://hive.apache.org/)、[https://databricks.com/spark/about/](https://databricks.com/spark/about/) 以及许多其它应用程序。  
`symlink.txt` Apache Hive 兼容的清单文件当前不适用于 AWS Glue。  
对于 ORC 和 Parquet 格式的清单文件，不支持使用 [https://hive.apache.org/](https://hive.apache.org/) 和 [https://databricks.com/spark/about/](https://databricks.com/spark/about/) 读取 `symlink.txt` 文件。