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
-
Em
main(), observe que há comentários “TODO“ com instruções para atualizar o código.-
Para
file_name: no link fornecido no comentário do código, baixe o arquivo de dados de exemplony.jsonou use seu próprio arquivo de dados grande. -
Para
region: atualize a variávelregion, 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.
-
-
Compile o exemplo.
-
Copie o arquivo especificado pela variável
file_namena sua pasta do executável e utilize o executávels3-crt-demo. -
Na sua pasta do executável, encontre o arquivo
.logmais recente. -
Abra o arquivo de log, selecione pesquisar e digite
partNumber. -
O log contém entradas semelhantes às seguintes, nas quais
partNumbereuploadIdsã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-PAYLOADe
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