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

5 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 podem 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 ou o custo que você incorre com as solicitações para o Amazon S3.

Os marcadores de exclusão também afetam o desempenho da lista; portanto, é uma prática recomendada minimizar o número de marcadores de exclusão. Como o comando sync executa chamadas de API list no back-end, os marcadores de exclusão também afetam o desempenho do comando sync. É possível usar uma regra de configuração do S3 Lifecycle para remover automaticamente marcadores de exclusão expirados em um bucket ativado por versionamento.

Resolução

Para melhorar o tempo de transferência ao executar o comando sync, implemente as seguintes práticas.

Execute várias operações da AWS CLI

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente 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 sync analisará todos os arquivos de origem. No entanto, devido aos filtros de exclusão e inclusão, apenas os arquivos que você inclui nos filtros são copiados ao bucket de destino.

Para obter mais informações sobre como otimizar o desempenho do seu workload, consulte Práticas recomendadas de padrões de design: otimizar o desempenho do Amazon S3.

Ative a Aceleração de transferências do Amazon S3

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

O Transfer Acceleration incorre em custos adicionais. Para revisar os preços, escolha a guia Transferência de dados na página de preços do Amazon S3. Para determinar se o Transfer Acceleration melhora suas velocidades de transferência, use a ferramenta de Comparação de velocidade de aceleração de transferências do Amazon S3.

Observação: o Transfer Acceleration não oferece suporte à ação CopyObject nas regiões da AWS.

Modifique os valores de configuração do 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 the --cli-read-timeout value or the --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 para 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 valor para o qual você deseja aumentar.

multipart_chunksize

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

aws configure set default.s3.multipart_chunksize 16MB

Observação: Substitua 16 MB pelo valor para o qual você deseja aumentar.

É possível especificar o número de bytes como um número inteiro ou usar um sufixo de tamanho. Para objetos grandes, é possível definir o limite de multipart_threshold para 100 MB para que somente arquivos significativamente grandes usem upload multiparte. Defina o tamanho de multipart_chunksize para 25 MB para equilibrar entre uploads eficientes e tamanhos de peça gerenciáveis.

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

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

  • Use um tipo de instância do Amazon EC2 maior. Tipos de instâncias maiores têm alta largura de banda e redes otimizadas para Amazon Elastic Block Store (Amazon EBS).
  • Para reduzir a latência, reduza a distância geográfica entre a instância e seu bucket do Amazon S3. Se a instância estiver em uma região diferente do bucket, use uma instância na mesma região.
  • Se a instância estiver na mesma região do bucket de origem, configure um endpoint de gateway do Amazon Virtual Private Cloud (Amazon VPC) para S3.

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 fazer o download ou o upload para o Amazon S3?

AWS OFICIAL
AWS OFICIALAtualizada há 2 meses