Como posso otimizar o desempenho ao fazer upload de grandes quantidades de dados no Amazon S3?

3 minuto de leitura
0

Estou fazendo upload de uma grande quantidade de dados no Amazon Simple Storage Service (Amazon S3) ou copio uma grande quantidade de dados entre buckets do S3. Como posso otimizar o desempenho dessa transferência de dados?

Resolução

Considere os seguintes métodos de transferência de grandes quantidades de dados de ou para buckets do Amazon S3:

Uploads paralelos usando a AWS Command Line Interface (AWS CLI)

Observação: se você receber erros ao executar comandos da AWS CLI, verifique se está usando a versão mais recente da AWS CLI.

Para reduzir potencialmente o tempo total necessário para concluir a transferência, divida a transferência em várias operações mutuamente exclusivas. Você pode executar várias instâncias do aws s3 cp (copiar), aws s3 mv (mover) ou aws s3 sync (sincronizar) ao mesmo tempo.

Uma forma de dividir sua transferência é usar os parâmetros --exclude e --include para separar as operações por nome de arquivo. Por exemplo, você deseja copiar uma grande quantidade de dados de um bucket para outro. Neste exemplo, todos os nomes de arquivo começam com um número. Você pode executar os seguintes comandos em duas instâncias da AWS CLI.

**Observação:**Os parâmetros --exclude e --include são processados no lado do cliente. Por causa disso, os recursos da sua máquina local podem afetar o desempenho da operação.

Execute este comando para copiar os arquivos com nomes que começam com os números de 0 a 4:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

Execute este comando para copiar os arquivos com nomes que começam com os números de 5 a 9:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Importante: se você precisar transferir um grande número de objetos (centenas de milhões), considere criar uma aplicação personalizada usando um SDK da AWS para realizar a cópia. Embora a AWS CLI possa realizar a cópia, uma aplicação personalizada pode ser mais eficiente nessa escala.

AWS Snowball

Considere usar o AWS Snowball para transferências entre seus data centers on-premises e o Amazon S3, especialmente quando os dados excederem 10 TB.

Observe as seguintes limitações:

  • O AWS Snowball não oferece suporte a transferências de dados de bucket para bucket.
  • O AWS Snowball não oferece suporte à criptografia do lado do servidor com chaves gerenciadas pelo AWS Key Management System (AWS KMS). Para obter mais informações, consulte Criptografia no AWS Snowball.

S3DistCp com o Amazon EMR

Considere usar o S3DistCp com o Amazon EMR para copiar dados em buckets do Amazon S3. O S3DistCp permite a cópia paralela de grandes volumes de objetos.

Importante: como essa opção exige que você execute um cluster do Amazon EMR, não se esqueça de revisar os preços do Amazon EMR.


Informações relacionadas

Diretrizes de taxa de solicitação e desempenho

AWS OFICIAL
AWS OFICIALAtualizada há um ano