¿Cómo puedo optimizar el rendimiento al cargar grandes cantidades de datos a Amazon S3?

3 minutos de lectura
0

Quiero cargar una gran cantidad de datos a Amazon Simple Storage Service (Amazon S3) o a copiar una gran cantidad de datos entre buckets de S3. Quiero optimizar el rendimiento de esta transferencia de datos.

Resolución

Usa uno de los siguientes métodos para transferir grandes cantidades de datos hacia los buckets de Amazon S3 o desde ellos.

Cargas paralelas mediante la Interfaz de la línea de comandos de AWS (AWS CLI)

Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, comprueba si estás utilizando la versión más reciente de la AWS CLI.

Para reducir potencialmente el tiempo total que se tarda en completar la transferencia, divide la transferencia en varias operaciones que se excluyan mutuamente. Puedes ejecutar varias instancias de aws s3 cp (copiar), aws s3 mv (mover) o aws s3 sync (sincronizar) al mismo tiempo.

Una forma de dividir la transferencia es usar los parámetros --exclude e --include para separar las operaciones por nombre de archivo. Por ejemplo, si tienes que copiar una gran cantidad de datos de un bucket a otro y todos los nombres de los archivos comienzan por un número, puedes ejecutar los siguientes comandos en dos instancias de la AWS CLI.

Nota: Los parámetros --exclude e --include se procesan en el lado del cliente. Por ello, los recursos de la máquina local pueden afectar al rendimiento de la operación.

Ejecute este comando para copiar los archivos con nombres que comiencen por números del 0 al 4:

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

Ejecute este comando para copiar los archivos con nombres que comiencen por números del 5 al 9:

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

Importante: Si tienes que transferir una cantidad muy grande de objetos (cientos de millones), considera la posibilidad de crear una aplicación personalizada con un AWS SDK para efectuar la copia. Si bien la AWS CLI puede hacer la copia, una aplicación personalizada podría ser más eficiente a esa escala.

AWS Snowball

Considere la posibilidad de utilizar AWS Snowball para las transferencias entre los centros de datos locales y Amazon S3, sobre todo cuando los datos superen los 10 TB.

Tenga en cuenta las siguientes limitaciones:

  • AWS Snowball no admite transferencias de datos entre buckets.
  • AWS Snowball no admite el cifrado del lado del servidor con claves administradas por AWS Key Management System (AWS KMS). Para obtener más información, consulta Server-Side Encryption in AWS Snowball (Cifrado del lado del servidor en AWS Snowball).

S3DistCp con Amazon EMR

Considere la posibilidad de utilizar S3DistCp con Amazon EMR para copiar datos en buckets de Amazon S3. S3DistCp permite la copia paralela de grandes volúmenes de objetos.

Importante: Dado que esta opción requiere que lance un clúster de Amazon EMR, asegúrese de revisar los precios de Amazon EMR.

Información relacionada

Prácticas recomendadas para patrones de diseño: optimizar el rendimiento de Amazon S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 5 meses