Faça upload de arquivos para um bucket do Lightsail com upload de várias partes - Amazon Lightsail

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

Faça upload de arquivos para um bucket do Lightsail com upload de várias partes

Com o carregamento multiparte, você pode carregar um arquivo único para seu bucket como um conjunto de partes. Cada parte é uma parte contígua de dados do arquivo. O carregamento dessas partes de arquivos pode ser feito de maneira independente e em qualquer ordem. Se a transmissão de alguma parte falhar, você poderá retransmitir essa parte sem afetar outras partes. Depois que todas as partes do seu arquivo são carregadas, o Amazon S3 monta essas partes e cria o objeto em seu bucket no Amazon Lightsail. Geralmente, quando seu objeto alcança 100 MB de tamanho, você deve considerar o uso de multipart uploads em vez de fazer upload do objeto em uma única operação. Para obter mais informações sobre buckets, consulte Armazenamento de objetos.

Usar o multipart upload fornece as seguintes vantagens:

  • Throughput aprimorado: você pode carregar partes em paralelo para melhorar o throughput.

  • Recuperação rápida de alguns problemas de rede - Partes de tamanho menor minimizam o impacto de reiniciar um upload que tenha falhado devido a um erro de rede.

  • carregar ao longo do tempo: você pode carregar partes do arquivo ao longo do tempo Após iniciar um carregamento fracionado, você tem 24 horas para concluir o carregamento fracionado.

  • Começar o carregamento antes de saber o tamanho final do arquivo: você pode carregar um objeto à medida que ele for criado.

Recomendamos que você use o carregamento fracionado das seguintes maneiras:

  • Se você estiver carregando arquivos grandes em uma rede de largura de banda alta, o carregamento fracionado maximiza o uso da largura de banda disponível, carregando partes do arquivo em paralelo para performance com vários threads.

  • Se você estiver fazendo upload em uma rede lenta, use o carregamento fracionado para aumentar a resiliência dos erros de rede, evitando reinícios de upload. Ao usar o carregamento fracionado, tente carregar novamente apenas as partes que foram interrompidas. Não há necessidade de recomeçar ou carregar o arquivo inteiro novamente.

Índice

Processo de carregamento fracionado

O upload de várias partes é um processo de três etapas que usa ações do Amazon S3 para fazer upload de arquivos para seu bucket no Lightsail:

  1. Você inicia o upload de várias partes usando a CreateMultipartUploadação.

  2. Você carrega as partes do arquivo usando a UploadPartação.

  3. Você conclui o upload de várias partes usando a CompleteMultipartUploadação.

nota

Você pode interromper um upload de várias partes depois de iniciá-lo usando a AbortMultipartUploadação.

Quando a solicitação de carregamento multiparte for concluída, o Amazon Simple Storage Service constrói o objeto com base nas partes carregadas. Em seguida, você pode acessar o objeto da mesma maneira que você acessaria qualquer outro objeto em seu bucket.

Você pode listar todos os seus multipart uploads em andamento ou obter uma lista das partes que carregou para um multipart upload específico. Cada uma dessas operações é explicada nesta seção.

Iniciação de carregamento fracionado

Quando você envia uma solicitação para iniciar um carregamento multiparte, o Amazon Simple Storage Service retorna uma resposta com um ID de carregamento. Este é um identificador exclusivo para o carregamento fracionado. É necessário incluir esse ID de carregamento sempre que fizer o carregamento de partes, listar as partes, concluir um carregamento ou interromper um carregamento. Se você desejar fornecer metadados que descrevem o objeto que está sendo carregado, deverá especificá-los na solicitação para iniciar o carregamento fracionado.

Carregamento de partes

Ao fazer upload de uma parte, além do ID de upload, você deve especificar um número de parte. Você pode escolher qualquer número de parte entre 1 e 10.000. Um número de parte identifica com exclusividade a parte e sua posição no objeto do qual você está fazendo upload. O número de parte que você escolheu não precisa estar em uma sequência consecutiva (por exemplo, pode ser 1, 5 e 14). Se você fizer upload de uma nova parte usando o mesmo número da parte anteriormente carregada, a parte anteriormente carregada será substituída.

Sempre que você carrega uma peça, o Amazon Simple Storage Service retorna um ETag cabeçalho em sua resposta. Para cada upload de peça, você deve registrar o número da peça e o ETag valor. Você tem que incluir esses valores na solicitação subsequente para concluir o multipart upload.

nota

Todas as partes carregadas de um carregamento fracionado são armazenadas em seu bucket. Elas consomem o espaço de armazenamento do bucket até que você conclua o carregamento, interrompa o carregamento ou chegue ao tempo limite de carregamento. Para obter mais informações, consulte Retenção do carregamento fracionado mais adiante neste guia.

Conclusão de carregamento fracionado

Quando você concluir um carregamento multiparte, o Amazon Simple Storage Service criará um objeto concatenando as partes em ordem crescente com base no número da parte. Se algum metadado de objeto for fornecido na solicitação iniciar carregamento multiparte, o Amazon Simple Storage Service associará esses metadados ao objeto. Depois de uma solicitação de conclusão bem-sucedida, as partes não existem mais.

Sua solicitação completa de upload em várias partes deve incluir o ID de upload e uma lista dos números de peça e dos ETag valores correspondentes. A resposta do Amazon Simple Storage Service inclui uma ETag que identifica de forma exclusiva os dados combinados do objeto. Isso não ETag é necessariamente um MD5 hash dos dados do objeto.

Se preferir, você poderá interromper o multipart upload. Depois de interromper um multipart upload, você não pode fazer upload de nenhuma parte usando esse ID de upload novamente. Todo o armazenamento de qualquer parte do multipart upload cancelado é então liberado. Se algum upload de parte estiver em andamento, ele ainda poderá ser bem-sucedido ou falhar mesmo depois da interrupção. Para liberar todo o armazenamento consumido por todas as partes, é necessário interromper um multipart upload somente depois que todos os uploads de parte tiverem sido concluídos.

Listagens de carregamento fracionado

Você pode listar as partes de um multipart upload específico ou de todos os multipart uploads em andamento. A operação de listagem de partes retorna as informações das partes que você fez upload em um multipart upload específico. Para cada solicitação de listagem de partes, o Amazon Simple Storage Service retorna informações das partes do carregamento multiparte especificado, até no máximo mil partes. Se houver mais de 1.000 partes no multipart upload, você deverá enviar uma série de solicitações de listagem para recuperar todas as partes. Observe que a lista de partes retornada não inclui partes que ainda estão sendo carregadas. Usando a operação listar carregamento fracionados, você pode obter uma lista de carregamento fracionados em andamento.

Um multipart upload em andamento é um upload que você iniciou, mas que ainda não concluiu nem interrompeu. Cada solicitação retorna no máximo 1.000 multipart uploads. Se houver mais de 1.000 carregamento fracionados em andamento, você precisará enviar solicitações adicionais para recuperar os carregamento fracionados restantes. Use a listagem retornada apenas para verificação. Não use o resultado dessa listagem ao enviar uma solicitação de conclusão de carregamento fracionado. Em vez disso, mantenha sua própria lista dos números de peça que você especificou ao fazer o upload das peças e os ETag valores correspondentes que o Amazon Simple Storage Service retorna.

Operações simultâneas de multipart upload

Em um ambiente de desenvolvimento distribuído, é possível que seu aplicativo inicie várias atualizações no mesmo objeto ao mesmo tempo. Seu aplicativo pode iniciar vários multipart uploads usando a mesma chave de objeto. Para cada um desses carregamentos, a aplicação pode carregar as partes e enviar uma solicitação de conclusão de carregamento ao Amazon Simple Storage Service para criar o objeto. Quando os buckets têm o versionamento habilitado, concluir um multipart upload sempre cria uma nova versão. Para os buckets que não têm o versionamento habilitado, outras solicitações podem ter precedência, como as solicitações que são recebidas depois que um carregamento fracionado é iniciado e antes de ele ser concluído.

nota

É possível que outras solicitações tenham precedência, como solicitações recebidas depois de iniciar um carregamento fracionado e antes dele ser concluído. Por exemplo, outra operação pode excluir uma chave depois que você iniciar um carregamento fracionado com essa chave e antes que o carregamento fracionado seja concluído. Se isso ocorrer, a resposta de carregamento fracionado poderá indicar a criação bem-sucedida de um objeto sem você nunca ter visto o objeto.

Retenção do carregamento fracionado

Todas as partes carregadas de um carregamento fracionado são armazenadas em seu bucket. Elas consomem o espaço de armazenamento do bucket até que você conclua o carregamento, interrompa o carregamento ou chegue ao tempo limite de carregamento. Um carregamento fracionado expira e o carregamento fracionado é excluído, após 24 horas a partir de quando foi criado. Quando você interrompe um carregamento fracionado ou o tempo limite, todas as partes carregadas são excluídas e o espaço de armazenamento usado para consumir em seu bucket é liberado.

Limites de carregamento multiparte do Amazon Simple Storage Service

A tabela a seguir fornece especificações básicas do multipart upload.

  • Tamanho máximo do objeto: 5 TB

  • Número máximo de partes por carregamento: 10.000

  • Números de parte: 1-10.000 (inclusive)

  • Tamanho da parte: 5 MB (mínimo) - 5 GB (máximo). Não há limite de tamanho na última parte do multipart upload.

  • Número máximo de partes retornadas em uma solicitação de listagem de partes: 1.000

  • Número máximo de carregamento fracionados retornados em uma solicitação de listagem de carregamento fracionados: 1.000

Dividir o arquivo a carregar

Use o comando split no sistema operacional Linux ou Unix para dividir um arquivo em várias partes que você então carrega para seu bucket. Existem aplicações freeware semelhantes que você pode usar no sistema operacional Windows para dividir um arquivo. Depois de dividir o arquivo em várias partes, continue para a seção Iniciar um carregamento fracionado deste guia.

Iniciar um carregamento multiparte usando a AWS CLI

Conclua o procedimento a seguir para iniciar um carregamento multiparte usando a AWS Command Line Interface (AWS CLI). Faça isso usando o comando create-multipart-upload. Para obter mais informações, consulte create-multipart-uploadna Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Lightsail e o Amazon S3 antes de continuar com esse procedimento. Para obter mais informações, consulte Configurar o AWS CLI para trabalhar com o Lightsail.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Insira o comando a seguir para criar um carregamento fracionado para o bucket.

    aws s3api create-multipart-upload --bucket BucketName --key ObjectKey --acl bucket-owner-full-control

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • BucketName- O nome do bucket para o qual você deseja criar um upload de várias partes.

    • ObjectKey- A chave do objeto a ser usada para o arquivo que você enviará.

    Exemplo:

    aws s3api create-multipart-upload --bucket amzn-s3-demo-bucket --key sailbot.mp4 --acl bucket-owner-full-control

    Será apresentado um resultado semelhante ao seguinte exemplo: A resposta inclui um UploadID, que você deve especificar nos comandos subsequentes para fazer carregamento de partes e concluir o carregamento fracionado deste objeto.

    Resultado do create-multipart-upload comando

    Depois de ter o UploadID para o carregamento multiparte, continue para a seção seguinte Carregar uma parte usando a AWS CLI deste guia e comece a carregar partes.

Faça o upload de uma peça usando o AWS CLI

Conclua o procedimento a seguir para listar uma parte de um carregamento multiparte usando a AWS Command Line Interface (AWS CLI). Faça isso usando o comando upload-part. Para obter mais informações, consulte upload-part na AWS CLI Command Reference.

nota

Você deve instalar AWS CLI e configurá-lo para o Lightsail e o Amazon S3 antes de continuar com esse procedimento. Para obter mais informações, consulte Configurar o AWS CLI para trabalhar com o Lightsail.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Digite o comando a seguir para fazer carregamento de uma parte para o seu bucket.

    aws s3api upload-part --bucket BucketName --key ObjectKey --part-number Number --body FilePart --upload-id "UploadID" --acl bucket-owner-full-control

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • BucketName- O nome do bucket para o qual você deseja criar um upload de várias partes.

    • ObjectKey- A chave do objeto a ser usada para o arquivo que você enviará.

    • Number - O número de peça da peça que você está carregando. Um número de parte identifica com exclusividade a parte e sua posição no objeto do qual você está fazendo upload. Certifique-se de aumentar incrementalmente o parâmetro --part-number com cada parte que você carregar. Para fazer isso, numere na ordem em que o Amazon Simple Storage Service deve montar o objeto quando você concluir o carregamento multiparte.

    • FilePart - O arquivo de peça a ser carregado do seu computador.

    • UploadID - O ID de upload do upload de várias partes que você criou anteriormente neste guia.

    Exemplo:

    aws s3api upload-part --bucket amzn-s3-demo-bucket --key sailbot.mp4 --part-number 1 --body sailbot.mp4.001 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    Será apresentado um resultado semelhante ao seguinte exemplo: Repita o comando upload-part para cada parte que você carregar. A resposta para cada uma das suas solicitações de carregamento de parte incluirá um valor ETag para a parte que você carregou. Registe os valores ETag para cada uma das partes que você carrega. Você precisará de todos os valores ETag para concluir o carregamento fracionado, que é abordado mais adiante neste guia.

    Resultado do comando upload-part

Liste partes de um upload de várias partes usando o AWS CLI

Conclua o procedimento a seguir para listar partes de um carregamento multiparte usando a AWS Command Line Interface (AWS CLI). Faça isso usando o comando list-parts. Para obter mais informações, consulte list-parts na AWS CLI Command Reference.

Conclua este procedimento para obter os valores ETag para todas as partes carregadas em um carregamento fracionado. Você precisará desses valores para concluir o carregamento fracionado mais adiante neste guia. No entanto, se você gravou todos os valores ETag a partir da resposta de seus carregamentos de partes, então você pode ignorar este procedimento e continuar para a seção do arquivo Criar um carregamento fracionado .json deste guia.

nota

Você deve instalar AWS CLI e configurá-lo para o Lightsail e o Amazon S3 antes de continuar com esse procedimento. Para obter mais informações, consulte Configurar o AWS CLI para trabalhar com o Lightsail.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Informe o comando a seguir para listar as partes de um carregamento fracionado em seu bucket.

    aws s3api list-parts --bucket BucketName --key ObjectKey --upload-id "UploadID"

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • BucketName- O nome do bucket para o qual você deseja listar as partes de um upload com várias partes.

    • ObjectKey- A chave do objeto do upload de várias partes.

    • UploadID - O ID de upload do upload de várias partes que você criou anteriormente neste guia.

    Exemplo:

    aws s3api list-parts --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG"

    Será apresentado um resultado semelhante ao seguinte exemplo: A resposta lista todos os números de peça e valores ETag para as partes que você carregou no carregamento fracionado. Copie estes valores para a área de transferência e continue para a seção Criar um carregamento fracionado .json deste guia.

    Resultado do comando list-parts

Criar um carregamento fracionado do arquivo .json

Conclua o procedimento a seguir para criar um arquivo .json de carregamento fracionado que define todas as partes que você carregou e seus valores ETag. Isso é necessário mais adiante neste guia para concluir o carregamento fracionado.

  1. Abra um editor de texto e cole a resposta do comando list-parts que você solicitou na seção anterior deste guia.

    O resultado será algo semelhante a este exemplo:

    JSONArquivo de upload de várias partes número 1
  2. Reformate o arquivo de texto conforme mostrado no exemplo a seguir:

    JSONArquivo de upload em várias partes número 2
  3. Salve o arquivo de texto em seu computador como mpstructure.json e continue até a seção Concluir um upload de várias partes usando a AWS CLI seção deste guia.

Conclua um upload de várias partes usando o AWS CLI

Conclua o procedimento a seguir para concluir um carregamento multiparte usando a AWS Command Line Interface (AWS CLI). Faça isso usando o comando complete-multipart-upload. Para obter mais informações, consulte complete-multipart-uploadna Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Lightsail e o Amazon S3 antes de continuar com esse procedimento. Para obter mais informações, consulte Configurar o AWS CLI para trabalhar com o Lightsail.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Digite o comando a seguir para fazer carregamento de uma parte para o seu bucket.

    aws s3api complete-multipart-upload --multipart-upload file://JSONFileName --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • JSONFileName- O nome do arquivo.json que você criou anteriormente neste guia (por exemplo,mpstructure.json).

    • BucketName- O nome do bucket para o qual você deseja concluir um upload de várias partes.

    • ObjectKey- A chave do objeto do upload de várias partes.

    • UploadID - O ID de upload do upload de várias partes que você criou anteriormente neste guia.

    aws s3api complete-multipart-upload --multipart-upload file://mpstructure.json --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    Você verá um resultado semelhante ao seguinte exemplo. Isso confirma que o carregamento fracionado foi concluído. O objeto agora está montado e disponível no bucket.

    Resultado do complete-multipart-upload comando

Liste os uploads de várias partes para um bucket usando a AWS CLI

Conclua o procedimento a seguir para listar todos os carregamentos multiparte para um bucket usando a AWS Command Line Interface (AWS CLI). Faça isso usando o comando list-multipart-uploads. Para obter mais informações, consulte list-multipart-uploadsna Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Lightsail e o Amazon S3 antes de continuar com esse procedimento. Para obter mais informações, consulte Configurar o AWS CLI para trabalhar com o Lightsail.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Digite o comando a seguir para fazer carregamento de uma parte para o seu bucket.

    aws s3api list-multipart-uploads --bucket BucketName

    No comando, substitua BucketNamecom o nome do bucket para o qual você deseja listar todos os uploads de várias partes.

    Exemplo:

    aws s3api list-multipart-uploads --bucket amzn-s3-demo-bucket

    Você verá um resultado semelhante ao seguinte exemplo.

    Resultado do list-multipart-uploads comando

Interrompa um upload de várias partes usando o AWS CLI

Conclua o procedimento a seguir para interromper um upload de várias partes usando o AWS Command Line Interface (AWS CLI). Faça isso se tiver iniciado um carregamento fracionado, mas não quiser continuar. Faça isso usando o comando abort-multipart-upload. Para obter mais informações, consulte abort-multipart-uploadna Referência de AWS CLI Comandos.

nota

Você deve instalar AWS CLI e configurá-lo para o Lightsail e o Amazon S3 antes de continuar com esse procedimento. Para obter mais informações, consulte Configurar o AWS CLI para trabalhar com o Lightsail.

  1. Abra um prompt de comando ou uma janela de terminal.

  2. Digite o comando a seguir para fazer carregamento de uma parte para o seu bucket.

    aws s3api abort-multipart-upload --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    No comando, substitua o seguinte exemplo de texto pelo seu próprio:

    • BucketName- O nome do bucket para o qual você deseja interromper um upload de várias partes.

    • ObjectKey- A chave do objeto do upload de várias partes.

    • UploadID - O ID de upload do upload de várias partes que você deseja interromper.

    Exemplo:

    aws s3api abort-multipart-upload --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    Esse comando não retorna uma resposta. Você pode executar um comando list-multipart-uploads para confirmar que o carregamento fracionado foi interrompido.