

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar o `S3CrtClient` para operações do Amazon S3
<a name="examples-s3-crt"></a>

A `S3CrtClient` classe está disponível na versão 1.9 do AWS SDK para C\$1\$1 e melhora a taxa de transferência de upload e download de grandes arquivos de dados de e para o Amazon S3. Para obter mais informações sobre as melhorias desta versão, consulte [Melhorando a taxa de transferência do Amazon S3](https://github.com/aws/aws-sdk-cpp/wiki/Improving-S3-Throughput-with-AWS-SDK-for-CPP-v1.9) com a versão 1.9 AWS SDK para C\$1\$1 

O `S3CrtClient` é implementado na parte superior das [bibliotecas do AWS Common Runtime (CRT)](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html).

**nota**  
Para evitar a cobrança por uploads incompletos ou parciais, recomendamos que você habilite a regra de [AbortIncompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html)ciclo de vida em seus buckets do Amazon S3.  
Essa regra faz com que o Amazon S3 anule multipart uploads que não sejam concluídos em um número específico de dias depois de serem iniciados. Quando o limite de tempo definido é excedido, o Amazon S3 anula o upload e exclui os dados de uploads incompletos.   
Para acessar mais informações, consulte [Definir configuração do ciclo de vida em bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html) no Guia do usuário do Amazon S3.

## Pré-requisitos
<a name="codeExamplePrereq"></a>

Antes de começar, recomendamos que você leia [Getting started using the AWS SDK para C\$1\$1](getting-started.md). 

Baixe o exemplo código de código e crie a solução conforme descrito em [Conceitos básicos dos exemplos de código](getting-started-code-examples.md). 

Para executar os exemplos, o perfil de usuário que seu código usa para fazer as solicitações deve ter as permissões adequadas AWS (para o serviço e a ação). Para obter mais informações, consulte [Fornecimento de AWS credenciais.](credentials.md)

## Upload e download de um objeto usando `S3CrtClient`
<a name="stream"></a>

Este exemplo demonstra como usar o [https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-s3-crt/html/class_aws_1_1_s3_crt_1_1_s3_crt_client.html](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-s3-crt/html/class_aws_1_1_s3_crt_1_1_s3_crt_client.html). O exemplo cria um bucket, faz upload de um objeto, baixa o objeto e, depois, exclui o arquivo e o bucket. Uma operação PUT se transforma em um multipart upload. Uma operação GET se transforma em várias solicitações GET “no intervalo”. Para acessar mais informações sobre multipart uploads, consulte [Carregar e copiar objetos usando upload fracionado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) no Guia do usuário do Amazon S3. 

É feito upload do arquivo de dados fornecido, `ny.json`, como um multipart upload neste exemplo. Isso pode ser confirmado visualizando os logs de depuração após uma execução bem-sucedida do programa.

Se o upload falhar, um `AbortMultipartUpload` será emitido na biblioteca CRT subjacente para limpar todas as partes das quais já foi feito upload. No entanto, nem todas as falhas podem ser tratadas internamente (como um cabo de rede que foi desconectado). É recomendável criar uma regra de ciclo de vida em seu bucket do Amazon S3 para garantir que os dados cujo upload foi feito parcialmente não permaneçam na sua conta (esses dados ainda podem ser faturados). Para saber mais sobre como configurar uma regra de ciclo de vida, consulte [Descobrir e excluir multipart uploads incompletos para reduzir os custos do Amazon S3](https://aws.amazon.com/blogs/aws-cost-management/discovering-and-deleting-incomplete-multipart-uploads-to-lower-amazon-s3-costs/ ). 

**Usar o log de depuração para explorar detalhes de multipart upload**

1. Em `main()`, observe que há comentários “TODO“ com instruções para atualizar o código.

   1. Para `file_name`: no link fornecido no comentário do código, baixe o arquivo de dados de exemplo `ny.json` ou use seu próprio arquivo de dados grande.

   1. Para`region`: Atualize a `region` variável, usando a enumeração, para a Região da AWS da sua conta. Para encontrar a região da sua conta, faça login no Console de gerenciamento da AWS e localize a região no canto superior direito.

1. Compile o exemplo.

1. Copie o arquivo especificado pela variável `file_name` na sua pasta do executável e utilize o executável `s3-crt-demo`.

1. Na sua pasta do executável, encontre o arquivo `.log` mais recente.

1. Abra o arquivo de log, selecione **pesquisar** e digite **partNumber**.

1. O log contém entradas semelhantes às seguintes, nas quais `partNumber` e `uploadId` são especificadas para cada parte do arquivo do qual foi feito upload:

    `PUT /my-object partNumber=1&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD`

    and 

    `PUT /my-object partNumber=2&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD `

Veja o exemplo completo no [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3-crt/s3-crt-demo.cpp).