

# Como recuperar ou copiar objetos com base em metadados com leituras condicionais
<a name="conditional-reads"></a>

Com as leituras condicionais, é possível adicionar um cabeçalho extra à solicitação de leitura para adicionar condições prévias à operação do S3. Se essas condições prévias não forem atendidas, a solicitação de leitura falhará.

É possível usar leituras condicionais em solicitações `GET`, `HEAD` ou `COPY` para exibir apenas um objeto com base nos metadados.

Ao fazer upload de um objeto, o Amazon S3 cria metadados controlados pelo sistema que só podem ser modificados pelo S3. Tags de entidade (ETags) e Last-Modified são exemplos de metadados controlados pelo sistema. ETag de um objeto é uma string que representa uma versão específica de um objeto. A data Last-Modified corresponde a metadados que representam a data de criação de um objeto ou a data da última modificação, a mais recente entre as duas.

Com leituras condicionais, é possível exibir um objeto com base na ETag ou na data da última modificação do objeto. É possível especificar um valor de ETag com sua solicitação e exibir o objeto somente se o valor da ETag coincidir. Isso pode garantir que você exiba ou copie apenas uma versão específica de um objeto. É possível especificar um valor de Last-Modified com sua solicitação de leitura e exibir um objeto somente se ele tiver sido modificado desde a data fornecida. 

## APIs compatíveis
<a name="conditional-read-apis"></a>

As seguintes APIs do S3 são compatíveis com o uso de leituras condicionais:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

É possível usar os cabeçalhos a seguir para exibir um objeto dependente da tag da entidade (ETag) ou da data da última modificação. Para ter mais informações sobre metadados de objetos, como ETags e Last-Modified, consulte [Metadados do objeto definidos pelo sistema](UsingMetadata.md#SysMetadata).

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)**  

+ `If-Match`: exibirá o objeto somente se a ETag corresponder à fornecida. 
+ `If-Modified-Since`: exibirá o objeto somente se ele tiver sido modificado desde o horário especificado.
+ `If-None-Match`: exibirá o objeto somente se a ETag não corresponder à fornecida.
+ `If-Unmodified-Since`: exibirá o objeto somente se ele não tiver sido modificado desde o horário especificado.

Para ter mais informações sobre esses cabeçalhos, erros exibidos e a ordem em que o S3 processa vários cabeçalhos condicionais em uma única solicitação, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) na “Referência de API do Amazon Simple Storage Service”.

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)**  

+ `If-Match`: exibirá o objeto somente se a ETag corresponder à fornecida. 
+ `If-Modified-Since`: exibirá o objeto somente se ele tiver sido modificado desde o horário especificado.
+ `If-None-Match`: exibirá o objeto somente se a ETag não corresponder à fornecida.
+ `If-Unmodified-Since`: exibirá o objeto somente se ele não tiver sido modificado desde o horário especificado.

Para ter mais informações sobre esses cabeçalhos, erros exibidos e a ordem em que o S3 processa vários cabeçalhos condicionais em uma única solicitação, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) na “Referência de API do Amazon Simple Storage Service”.

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)**  

+ `x-amz-copy-source-if-match`: copiará o objeto de origem somente se a ETag corresponder à fornecida. 
+ `x-amz-copy-source-if-modified-since`: copiará o objeto de origem somente se ele tiver sido modificado desde o horário especificado.
+ `x-amz-copy-source-if-none-match`: copiará o objeto de origem somente se a ETag não corresponder à fornecida.
+ `x-amz-copy-source-if-unmodified-since`: copiará o objeto de origem somente se ele não tiver sido modificado desde o horário especificado.
+ `If-Match`: copia o objeto somente se a ETag corresponder à fornecida. `If-Match` exige o valor da ETag como uma string.
+ `If-None-Match`: copia o objeto somente se a ETag não corresponder à fornecida. `If-None-Match` exige o caractere “\$1” (asterisco).

Para ter mais informações sobre esses cabeçalhos, erros exibidos e a ordem em que o S3 processa vários cabeçalhos condicionais em uma única solicitação, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) na “Referência de API do Amazon Simple Storage Service”.