Ir para o conteúdo

Como faço para melhorar o desempenho da transferência de dados com o comando sync da AWS CLI para o Amazon S3?

6 minuto de leitura
0

Eu uso o comando de sincronização da AWS Command Line Interface (AWS CLI) para transferir dados no Amazon Simple Storage Service (Amazon S3). No entanto, a transferência leva muito tempo para ser concluída.

Breve descrição

O número de objetos no bucket de origem e destino pode afetar o tempo que demora para o comando sync concluir o processo. O tamanho da transferência pode afetar a duração da sincronização e o custo das solicitações para o Amazon S3.

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Remover marcadores de exclusão expirados

Como o comando sync executa chamadas de API list no backend, os marcadores de exclusão afetam o desempenho do comando sync. É uma prática recomendada minimizar o número de marcadores de exclusão. É possível usar uma regra de configuração de ciclo de vida do S3 para remover automaticamente marcadores de exclusão expirados em um bucket ativado com versionamento habilitado.

Execute várias operações da AWS CLI

Para copiar uma grande quantidade de dados, execute operações de sincronização separadas em paralelo. O comando de exemplo a seguir executa operações de sincronização paralelas para diferentes prefixos:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

Ou execute operações de sincronização paralela para filtros de exclusão e inclusão separados. Por exemplo, as operações a seguir separam os arquivos a serem sincronizados por nomes de chave que começam com números de 0 a 4 e números de 5 a 9:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Observação: mesmo ao utilizar filtros de exclusão e inclusão, o comando sync ainda analisa todos os arquivos no bucket de origem. A análise identifica os arquivos de origem a serem copiados para o bucket de destino. Se ainda houver várias operações de sincronização para prefixos de nomes de chave diferentes, cada operação de sincronização analisará todos os arquivos de origem. No entanto, devido aos filtros de exclusão e inclusão, o Amazon S3 copia apenas os arquivos que você inclui nos filtros do bucket de destino.

Para obter mais informações sobre como otimizar o desempenho do seu workload, consulte Padrões de design de melhores práticas: otimização do desempenho do Amazon S3.

Ative a aceleração de Transferências do S3

Use a Aceleração de Transferências do S3 para melhorar suas velocidades de transferência.

Para revisar os preços da Aceleração de Transferências do S3, clique na guia Transferência de dados na página de preços do Amazon S3. Para determinar se a Aceleração de Transferências do S3 melhora suas velocidades de transferência, use a ferramenta de Amazon S3 Transfer Acceleration Speed Comparison (Comparação de velocidade de aceleração de transferências do Amazon S3).

Observação: Com a Aceleração de Transferências do S3, não é possível usar a ação CopyObject nas regiões AWS.

Modifique os valores de configuração da AWS CLI

max_concurrent_requests

Quando você usa max_concurrent_requests, o número padrão de solicitações que é possível enviar ao Amazon S3 ao mesmo tempo é 10. Para melhorar o desempenho, aumente o valor.

Importante:

  • Ao executar mais threads, você usa mais recursos em sua máquina. Certifique-se de que sua máquina tenha recursos suficientes para suportar seu número máximo de solicitações simultâneas.
  • Muitas solicitações simultâneas podem causar tempos limite de conexão ou diminuir a capacidade de resposta do sistema. Para evitar problemas de tempo limite da AWS CLI, defina a opção --cli-read-timeout ou a opção --cli-connect-timeout como 0.

multipart_threshold

Quando um arquivo atinge o limite de tamanho, o Amazon S3 usa um upload multiparte em vez de uma única operação. O valor padrão de multipart_threshold é 8 MB. Para aumentar o valor padrão, execute o seguinte comando:

aws configure set default.s3.multipart_threshold 16MB

Observação: Substitua 16 MB pelo seu tamanho limite fracionado.

multipart_chunksize

O valor padrão de multipart_chunksize é 8 MB e o valor mínimo é 5 MB. Para aumentar o tamanho do bloco, execute o seguinte comando:

aws configure set default.s3.multipart_chunksize 16MB

Observação: Substitua 16 MB pelo novo tamanho do seu bloco.

Para objetos grandes, é uma prática recomendada definir multipart_threshold como 100 MB para que somente arquivos grandes usem carregamentos fracionados. Também é uma prática recomendada definir multipart_chunksize como 25 MB para equilibrar entre carregamentos eficientes e tamanhos de partes gerenciáveis.

(Opcional) Verifique a configuração da sua instância do Amazon EC2

Se você usa uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para executar sync, siga as seguintes práticas recomendadas para melhorar o desempenho:

Informações relacionadas

Como posso melhorar as velocidades de transferência para copiar dados entre meu bucket do S3 e a instância do EC2?

Como transferir grandes quantidades de dados de um bucket do Amazon S3 para outro?

Como soluciono problemas de velocidades lentas ou inconsistentes ao baixar ou fazer upload de dados de um cliente on-premises no Amazon S3?

AWS OFICIALAtualizada há 7 meses