Estamos migrando de ECS a Fargate. En ECS, podríamos establecer el nombre de host en la definición de la tarea de esta manera:
"nombre de host": "%HOST_NAME%"
No se puede crear con el error 'el nombre de host no es compatible con el contenedor cuando networkMode=awsvpc' ¿Hay alguna forma de configurar el nombre de host?
Aunque la documentación es clara de que esto no es compatible, existe una solución alternativa. Puede crear un archivo bootstrap_ecs.sh y anular el PUNTO DE ENTRADA del contenedor para hacer referencia a esto en tiempo de ejecución (o agregar lo siguiente a su propia secuencia de comandos de arranque). Puede usar esto cuando se ejecuta desde ECS. De lo contrario, use su PUNTO DE ENTRADA y COMANDO estándar.
bootstrap_ecs.sh
#!/bin/bash ifconfig # prints full IP info echo "Detecting 'eth1' interface..." DETECTED_IP=$(ifconfig -a | grep -A2 eth1 | grep inet | awk '{print $2}' | sed 's#/.*##g' | grep "\.") if [[ -z $DETECTED_IP ]]; then echo "Detecting 'eth0' interface ('eth1' not found)..." DETECTED_IP=$(ifconfig -a | grep -A2 eth0 | grep inet | awk '{print $2}' | sed 's#/.*##g' | grep "\." | head -1) fi DETECTED_HOSTNAME=$(hostname) echo -e "\n\nDETECTED_IP=$DETECTED_IP\nDETECTED_HOSTNAME=$DETECTED_HOSTNAME\n\n" # Note: newer OS versions us `ip` instead of `ifconfig` # Echo for debugging. You can comment/delete the 1st and 3rd lines once everything is working. echo -e "Current file contents:\n $(cat /etc/hosts)" echo "$DETECTED_IP $DETECTED_HOSTNAME" >> /etc/hosts echo -e "\n\n\nUpdated file contents:\n $(cat /etc/hosts)" CMD="$@" $CMDLa documentación de AWS dice que The hostname parameter is not supported if using the awsvpc networkMode. Todo lo que no sea awsvpc no es compatible con FARGATE, por lo tanto, no hay forma de establecer el nombre de host en la definición de tareas con el tipo de lanzamiento de FARGATE.
Permítanme compartir un consejo que apliqué para configurar el registro Avro Schema . Podría ser útil para responder a esta pregunta. Schema Registry requiere configurar la variable de entorno SCHEMA_REGISTRY_HOST_NAME . Con AWS Fargate y el modo de red awsvpc , no hay forma de establecer explícitamente la propiedad del nombre de host dentro de la definición de la tarea, como ya se señaló en este hilo. Para el escalado horizontal, necesita varias instancias de registro, cada una con su propio valor SCHEMA_REGISTRY_HOST_NAME . Había anulado la propiedad Command en una definición de tarea de la siguiente manera ( HOSTNAME proporciona el NOMBRE DE HOST y, bajo el régimen de awsvpc , refleja de manera confiable el nombre de host):
sh,-c,export SCHEMA_REGISTRY_HOST_NAME=$HOSTNAME;/etc/confluent/docker/run La desventaja de este enfoque es que ahora depende del detalle de implementación de la imagen; en este caso, la instrucción CMD original del Dockerfile. Esta es la razón por la que siempre es importante usar una etiqueta de versión específica con un nombre de imagen en lugar de confiar en la etiqueta latest .
PD Como referencia, aquí está mi comentario original sobre los problemas 1126 para el registro de esquemas.