Utilizo el comando sync de la Interfaz de la línea de comandos de AWS (AWS CLI) para transferir datos en Amazon Simple Storage Service (Amazon S3). Sin embargo, la transferencia tarda mucho tiempo en completarse.
Descripción corta
El número de objetos del bucket de origen y destino puede afectar al tiempo que tarda el comando sync en completar el proceso. El tamaño de la transferencia puede afectar a la duración de la sincronización y al coste de las solicitudes a Amazon S3.
Resolución
Nota: Si se muestran errores al poner en marcha comandos de AWS CLI, consulta Solución de errores de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Eliminación de marcadores de eliminación caducados
Dado que el comando sync ejecuta llamadas a la API list en el backend, los marcadores de eliminación afectan al rendimiento del comando sync. Se recomienda minimizar la cantidad de marcadores de eliminación. Puedes usar una regla de configuración del ciclo de vida de S3 para eliminar automáticamente los marcadores de eliminación vencidos en un bucket activado por el control de versiones.
Ejecución de varias operaciones de la AWS CLI
Para copiar una gran cantidad de datos, ejecuta operaciones de sincronización independientes en paralelo. El siguiente comando de ejemplo ejecuta operaciones de sincronización en paralelo para diferentes prefijos:
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
Como alternativa, ejecuta operaciones de sincronización en paralelo para filtros de exclusión e inclusión independientes. Las siguientes operaciones de ejemplo separan los archivos que se van a sincronizar por nombres clave que comienzan por los números del 0 al 4 y del 5 al 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*"
Nota: Aunque utilices filtros de exclusión e ** inclusión**, el comando sync seguirá revisando todos los archivos del bucket de origen. La revisión identifica los archivos de origen que se van a copiar al bucket de destino. Si tienes varias operaciones de sincronización dirigidas a diferentes prefijos de nombres clave, cada operación de sincronización revisará todos los archivos de origen. Sin embargo, gracias a los filtros de exclusión e inclusión, Amazon S3 solo copia en el bucket de destino los archivos incluidos en los filtros.
Para obtener más información sobre cómo optimizar el rendimiento de la carga de trabajo, consulta Prácticas recomendadas para patrones de diseño: optimizar el rendimiento de Amazon S3.
Activación de la aceleración de transferencias de S3
Usa la aceleración de transferencias de S3 para mejorar las velocidades de transferencia.
Para revisar los precios de la aceleración de transferencias de S3, selecciona la pestaña Transferencia de datos en la página de precios de Amazon S3. Para determinar si la aceleración de transferencias de S3 mejora tus velocidades de transferencia, utiliza la herramienta de comparación de velocidades de aceleración de transferencias de Amazon S3.
Nota: Con la aceleración de transferencias de S3, no puedes usar la acción CopyObject en todas las regiones de AWS.
Modificación de los valores de configuración de la AWS CLI
max_concurrent_requests
Cuando usas max_concurrent_requests, el número predeterminado de solicitudes que puedes enviar a Amazon S3 al mismo tiempo es de 10. Para mejorar el rendimiento, aumenta el valor.
Importante:
- Cuando ejecutas más subprocesos, utilizas más recursos en la máquina. Asegúrate de que la máquina tenga suficientes recursos para admitir la cantidad máxima de solicitudes simultáneas.
- Demasiadas solicitudes simultáneas pueden provocar tiempos de espera de conexión o ralentizar la capacidad de respuesta del sistema. Para evitar problemas de tiempo de espera debido a AWS CLI, establece la opción --cli-read-timeout option or the --cli-connect-timeout en 0.
multipart_threshold
Cuando un archivo alcanza el umbral de tamaño, Amazon S3 utiliza una carga multiparte en lugar de una sola operación. El valor predeterminado para multipart_threshold es de 8 MB. Para aumentar el valor predeterminado, ejecuta el siguiente comando:
aws configure set default.s3.multipart_threshold 16MB
Nota: Sustituye 16 MB por el umbral de tamaño multiparte.
multipart_chunksize
El valor predeterminado para multipart_chunksize es de 8 MB y el valor mínimo es de 5 MB. Para aumentar el tamaño de los fragmentos, ejecuta el siguiente comando:
aws configure set default.s3.multipart_chunksize 16MB
Nota: Sustituye 16 MB por el nuevo tamaño del fragmento.
Para objetos de gran tamaño, se recomienda establecer multipart_threshold en 100 MB para que solo los archivos de gran tamaño utilicen cargas multiparte. También se recomienda establecer multipart_chunksize en 25 MB para equilibrar las cargas eficientes y los tamaños de partes administrables.
(Opcional) Comprobación de la configuración de la instancia de Amazon EC2
Si ejecutas el comando sync desde una instancia de Amazon Elastic Compute Cloud (Amazon EC2), sigue estas prácticas recomendadas para mejorar el rendimiento:
Información relacionada
¿Cómo puedo mejorar las velocidades de transferencia para copiar datos entre mi bucket de S3 y mi instancia de EC2?
¿Cómo puedo transferir grandes cantidades de datos de un bucket de Amazon S3 a otro?
¿Cómo soluciono los problemas de velocidades lentas o inconsistentes cuando descargo o cargo datos a Amazon S3 desde un cliente local?