

# Localização de lista de inventário
<a name="storage-inventory-location"></a>

Quando uma lista de inventários é publicada, os arquivos manifestos são publicados no seguinte local no bucket de destino.

```
{{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}}` é o prefixo do nome da chave do objeto que é especificado opcionalmente na configuração do inventário. É possível usar esse prefixo para agrupar todos os arquivos da lista de inventários em um local comum no bucket de destino.
+ `{{{{amzn-s3-demo-source-bucket}}}}` é o bucket de origem ao qual a lista de inventário se refere. O nome do bucket de origem é adicionado para evitar colisões quando vários relatórios do inventário de diferentes buckets de origem são enviados ao mesmo bucket de destino.
+ O `{{config-ID}}` é adicionado para evitar colisões com vários relatórios do inventário do mesmo bucket de origem que são enviados ao mesmo bucket de destino. O `{{config-ID}}` vem da configuração do relatório de inventário e é o nome do relatório definido durante a configuração.
+ `{{YYYY-MM-DDTHH-MMZ}}` é o carimbo de data/hora que consiste na data e hora de início em que o processo de geração do relatório de inventário começa a verificar o bucket. Por exemplo, `2016-11-06T21-32Z`.
+ `manifest.json` é o arquivo manifesto. 
+ `manifest.checksum` é o hash MD5 do conteúdo do arquivo `manifest.json`. 
+ `symlink.txt` é o arquivo de manifesto compatível com o Apache Hive. 

As listas de inventários são publicadas diária ou semanalmente no seguinte local do bucket de destino.

```
{{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}}` é o prefixo do nome da chave do objeto que é especificado opcionalmente na configuração do inventário. É possível usar esse prefixo para agrupar todos os arquivos da lista de inventários em um local comum no bucket de destino.
+ `{{{{amzn-s3-demo-source-bucket}}}}` é o bucket de origem ao qual a lista de inventário se refere. O nome do bucket de origem é adicionado para evitar colisões quando vários relatórios do inventário de diferentes buckets de origem são enviados ao mesmo bucket de destino.
+ `{{example-file-name}}``.csv.gz` é um dos arquivos de inventário em formato CSV. Os nomes de inventário ORC terminam com a extensão do nome do arquivo `.orc`, e os nomes de inventário do Parquet terminam com a extensão de nome de arquivo `.parquet`.

## Manifesto de inventário
<a name="storage-inventory-location-manifest"></a>

Os arquivos manifestos `manifest.json` e `symlink.txt` descrevem onde os arquivos de inventário estão localizados. Sempre que uma nova lista de inventários é entregue, um novo conjunto de arquivos manifestos a acompanha. Esses arquivos podem se sobrepor. Em buckets habilitados para versionamento, o Amazon S3 cria versões dos arquivos de manifesto. 

Cada manifesto contido no arquivo `manifest.json` fornece metadados e outras informações básicas sobre um inventário. Essas informações incluem:
+ O nome do bucket de origem
+ O nome do bucket de destino
+ A versão do inventário
+ O carimbo de data/hora de criação no formato de data de referência (epoch) que consiste na hora de início e na data em que o processo de geração do relatório de inventário começa a verificar o bucket
+ O formato e o esquema de arquivos de inventário
+ Uma lista dos arquivos de inventário que estão no bucket de destino

Sempre que um arquivo `manifest.json` é gravado, ele é acompanhado por um arquivo `manifest.checksum`, que representa o hash MD5 do conteúdo do arquivo `manifest.json`.

**Example Manifesto de inventário em um arquivo `manifest.json`**  
Os exemplos a seguir mostram um manifesto de inventário em um arquivo `manifest.json` para inventários nos formatos CSV, ORC e Parquet.  
Veja a seguir um exemplo de manifesto em um arquivo `manifest.json` para um inventário em formato CSV.  

```
{
    "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"
        }
    ]
}
```
Veja a seguir um exemplo de manifesto em um arquivo `manifest.json` para um inventário em formato ORC.  

```
{
    "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"
        }
    ]
}
```
Veja a seguir um exemplo de manifesto em um arquivo `manifest.json` para um inventário em formato 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"
        }
    ]
}
```
O `symlink.txt` é um arquivo manifesto compatível com o Apache Hive permitindo que o Hive detecte automaticamente arquivos de inventário e os arquivos de dados associados. O manifesto compatível com o Hive funciona com os serviços compatíveis com o Hive, o Athena e o Amazon Redshift Spectrum. Ele também funciona com aplicações compatíveis com o Hive, como [https://prestodb.io/](https://prestodb.io/), [https://hive.apache.org/](https://hive.apache.org/), [https://databricks.com/spark/about/](https://databricks.com/spark/about/), e muitas outras.  
O arquivo de manifesto `symlink.txt` compatível com o Apache Hive atualmente não funciona com o AWS Glue.  
Não é possível ler o arquivo `symlink.txt` com o [https://hive.apache.org/](https://hive.apache.org/) e o [https://databricks.com/spark/about/](https://databricks.com/spark/about/) quando os arquivos de inventário seguem o formato Parquet e ORC. 