Localização de lista de inventário - Amazon Simple Storage Service

Localização de lista de inventário

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

destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.checksum destination-prefix/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.

  • 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.

  • 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/source-bucket/config-ID/data/example-file-name.csv.gz ... destination-prefix/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.

  • 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

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.

exemplo 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.

CSV

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em formato CSV.

{ "sourceBucket": "example-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/example-source-bucket/2016-11-06T21-32Z/files/939c6d46-85a9-4ba8-87bd-9db705a579ce.csv.gz", "size": 2147483647, "MD5checksum": "f11166069f1990abeb9c97ace9cdfabc" } ] }
ORC

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em formato ORC.

{ "sourceBucket": "example-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/example-source-bucket/data/d794c570-95bb-4271-9128-26023c8b4900.orc", "size": 56291, "MD5checksum": "5925f4e78e1695c2d020b9f6eexample" } ] }
Parquet

Veja a seguir um exemplo de manifesto em um arquivo manifest.json para um inventário em formato Parquet.

{ "sourceBucket": "example-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/example-source-bucket/data/d754c470-85bb-4255-9218-47023c8b4910.parquet", "size": 56291, "MD5checksum": "5825f2e18e1695c2d030b9f6eexample" } ] }

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, incluindo PrestoApache HiveApache Spark e muitos outros.

Importante

O arquivo manifesto symlink.txt compatível com Apache Hive atualmente não funciona com o AWS Glue.

Ler o arquivo symlink.txt com Apache Hive e Apache Spark não é compatível com arquivos de inventário no formato Parquet e ORC.