Quiero ejecutar el comando «cp» o «sync» de la interfaz de la línea de comandos de AWS (AWS CLI) en mi bucket de Amazon Simple Storage Service (Amazon S3). Sin embargo, aparece un error.
Solución
Nota: Si se muestran errores al ejecutar 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.
Para ejecutar los comandos cp o sync en la AWS CLI, tu máquina debe conectarse a los puntos de enlace de Amazon S3 correctos. De lo contrario, aparece un mensaje de error que indica que el servicio no se puede conectar a la URL del punto de enlace o que se ha agotado el tiempo de espera. Según el error que recibas, lleva a cabo las siguientes acciones de solución de problemas.
Error «Could not connect to the endpoint URL»
Confirmación de si se están utilizando la región y el punto de enlace de Amazon S3 correctos
Cuando ejecutas un comando en la AWS CLI, envía solicitudes de API al punto de enlace de Amazon S3 predeterminado de la región de AWS. Cuando especificas una región, la AWS CLI envía una solicitud de API a un punto de enlace de Amazon S3 específico de la región. A continuación, la AWS CLI puede redirigir la solicitud al punto de enlace de Amazon S3 de la región del bucket.
El error «Could not connect to the endpoint URL» puede aparecer si hay un error tipográfico o un error en la región o el punto de enlace especificados. Por ejemplo, el siguiente comando devuelve el error porque hay una e adicional en el nombre del punto de enlace:
aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --endpoint-url https://s3-acceleratee.amazonaws.com
Antes de ejecutar los comandos cp o sync, confirma que la región y el punto de enlace de Amazon S3 asociados son correctos. Utiliza el indicador --debug cuando ejecutes el comando de la AWS CLI para identificar el punto de enlace que utiliza la AWS CLI. Ejemplo de comando:
aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --debug
Nota: Si usas la aceleración de transferencias de Amazon S3, actívala para el bucket. Usa el punto de enlacebucket-name.s3-accelerate.amazonaws.com. O bien, utiliza el punto de enlace de pila doble bucket-name.s3-accelerate.dualstack.amazonaws.com para conectarte al bucket a través de IPv6. Sustituye bucket-name por el nombre de tu bucket.
Comprobar que el DNS pueda resolverse en esos puntos de enlace de Amazon S3
Para confirmar si tu DNS se puede resolver en los puntos de enlace de Amazon S3, utiliza una herramienta de consulta de DNS, como nslookup, dig o ping. Comandos de ejemplo:
nslookup s3.amazonaws.com
dig s3.amazonaws.com
ping s3.amazonaws.com
Si tu DNS no se puede resolver en los puntos de enlace de Amazon S3, soluciona entonces los problemas de configuración de DNS. Si tu proveedor de DNS es Amazon Route 53, consulta Solución de problemas de Amazon Route 53.
Error «Connect timeout on endpoint URL»
Comprobar que la red pueda conectarse a esos puntos de enlace de Amazon S3
Confirma si el firewall de tu red permite el tráfico a los puntos de enlace de Amazon S3 del puerto que utilizas para el tráfico de Amazon S3.
Por ejemplo, el siguiente comando telnet comprueba la conexión al punto de enlace de Amazon S3 de la región ap-southeast-2 en el puerto 443:
telnet s3.ap-southeast-2.amazonaws.com 443
Para capturar y analizar los paquetes de red y comprobar que tu máquina puede completar correctamente el protocolo de enlace TCP con el punto de enlace de Amazon S3, ejecuta el siguiente comando tcpdump:
sudo tcpdump -i eth0 'host s3.ap-southeast-2.amazonaws.com and port 443' -s0 -w samplecapture.pcap
Nota: Sustituye eth0 por tu interfaz de red elástica, ap-southeast-2 por tu región de punto de enlace de Amazon S3 y 443 por tu puerto. El indicador -s0 captura el paquete completo y -w samplecapture.pcap escribe la captura en un archivo. Puedes utilizar una herramienta como Wireshark para analizar la información del archivo.
Busca el protocolo de enlace de tres vías TCP (SYN, SYN-ACK, ACK) para confirmar la conectividad. Si solo ves paquetes SYN sin respuestas SYN-ACK, significa que hay un problema de firewall o enrutamiento.
Para detectar problemas de enrutamiento o pérdida de paquetes a lo largo de la ruta al punto de enlace de Amazon S3, ejecuta el siguiente comando mtr:
mtr -n -T -c 200 s3.ap-southeast-2.amazonaws.com -P 443 --report
Nota: Sustituye ap-southeast-2 por tu región y 443 por tu puerto. El indicador -n desactiva la resolución de DNS para acelerar la prueba y el indicador -T utiliza paquetes TCP que pueden ser más precisos que el Protocolo de mensajería y control de Internet (ICMP). El comando anterior ejecuta 200 ciclos de la prueba para mejorar la precisión estadística y genera un informe.
En Windows, puedes usar WinMTR para pruebas de enrutamiento similares. Busca una latencia alta, paquetes descartados o bucles de enrutamiento que puedan afectar a la conectividad con el punto de enlace de Amazon S3.
Comprobación de la configuración de la VPC en el caso de las instancias de Amazon EC2
Si aparece el error «Connection timeout» en una instancia de Amazon Elastic Compute Cloud (Amazon EC2), comprueba la configuración de tu nube virtual privada (VPC).
Si la instancia de EC2 está en una subred pública, comprueba la siguiente configuración:
Si la instancia de EC2 está en una subred privada, comprueba la siguiente configuración:
- Asegúrate de haber asociado una puerta de enlace de NAT a la tabla de enrutamiento de la subred.
- Si utilizas un punto de enlace de VPC para Amazon S3, confirma que el archivo de configuración de la AWS CLI tenga la región correcta.
Nota: Los puntos de enlace de VPC para Amazon S3 son específicos de cada región. Por ejemplo, ejecutas el comando sunc con --region us-west-1 pero el punto de enlace de VPC está en una región diferente. Como resultado, se muestra el error «Could not connect to the endpoint URL».
Cuando utilices AWS PrivateLink para acceder a Amazon S3 desde tu VPC, utiliza el analizador de accesibilidad. Esta herramienta te ayuda a identificar errores de configuración en los grupos de seguridad, las ACL de la red o las tablas de enrutamiento que podrían bloquear la conectividad. Por ejemplo, crea un análisis del analizador de accesibilidad para comprobar la ruta entre la instancia y el punto de enlace de la interfaz.