Usar o S3CrtClient para operações do Amazon S3 - AWS SDK para C++

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 classe S3CrtClient está disponível na versão 1.9 do AWS SDK para C++ e melhora o throughput de upload e download de grandes arquivos de dados de e para o Amazon S3. Para acessar mais informações sobre as melhorias desta versão, consulte Melhorar o throughput do Amazon S3 com o AWS SDK para C++ v1.9.

O S3CrtClient é implementado na parte superior das bibliotecas do AWS Common Runtime (CRT).

nota

Para evitar a cobrança por uploads incompletos ou parciais, recomendamos que você habilite a regra de ciclo de vida AbortIncompleteMultipartUpload 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 no Guia do usuário do Amazon S3.

Pré-requisitos

Antes de começar, recomendamos que você leia Getting started using the AWS SDK para C++.

Baixe o exemplo código de código e crie a solução conforme descrito em Conceitos básicos dos exemplos de código.

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 na AWS (para o serviço e a ação). Para acessar mais informações, consulte Fornecer credenciais da AWS.

Upload e download de um objeto usando S3CrtClient

Este exemplo demonstra como usar o S3CrtClient. 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 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.

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.

    2. Para region: atualize a variável region, 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.

  2. Compile o exemplo.

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

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

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

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

    e

    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.