Saltar al contenido

¿Por qué Systems Manager no muestra mi instancia de Amazon EC2 como una instancia administrada?

13 minutos de lectura
0

Quiero saber por qué recibo el error «SSM Agent is not online” or “Connection Lost” o por qué mi instancia de Amazon Elastic Compute Cloud (Amazon EC2) no está visible en el Administrador de flotas.

Descripción breve

Recibirás las siguientes notificaciones si tu AWS Systems Manager Agent (SSM Agent) está sin conexión en tu instancia de Amazon Elastic Compute Cloud (Amazon EC2):

Nota: Si tu SSM Agent está sin conexión, la instancia no aparece como administrada en Systems Manager.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Completa los siguientes requisitos previos y, a continuación, utiliza el runbook AWSSupport-TroubleshootManagedInstance para determinar por qué SSM Agent está sin conexión o no puede conectarse con Systems Manager. Para obtener más información, consulta Ejecución de una operación automatizada con la tecnología de Automatización de Systems Manager y Configuración de Automatización.

También puedes solucionar los problemas de tu instancia mediante la AWS CLI o de forma manual.

Verificar que SSM Agent esté instalado y en ejecución

Importante: En los pasos de solución de problemas, selecciona la región de AWS en la que se encuentra tu instancia.

Confirma que Systems Manager es compatible con tu sistema operativo (SO). A continuación, ejecuta el comando específico de tu sistema operativo para comprobar que has instalado SSM Agent.

Nota: SSM Agent está preinstalado en la mayoría de las imágenes de máquina de Amazon (AMI). Para obtener más información, consulta Búsqueda de AMI con SSM Agent preinstalado. Si no instalaste SSM Agent en tu instancia, instálalo manualmente en Linux, Windows o macOS.

Para comprobar que el estado de SSM Agent se está ejecutando y que SSM Agent no está en hibernación, sigue estos pasos:

  1. Abre la consola de Amazon EC2.
  2. En el panel de navegación de la izquierda, selecciona Instancias.
  3. Selecciona la instancia.
  4. Selecciona Acciones, Supervisar y solucionar problemas, Obtener registro del sistema.

Si tu SSM Agent está en ejecución, recibirás el mensaje «Amazon SSM Agent vx.x.x.x is running».

Si tu SSM Agent está en hibernación, recibirás uno de los siguientes mensajes, seguido del motivo por el que tu SSM Agent está en hibernación:

  • «SSM Agent entering hibernation due to error:»
  • «SSM Agent unable to acquire credentials:» 

Nota: Si usas SSM Agent versión 3.3.2471.0 o una posterior, revisa el registro del sistema de tu instancia para averiguar el motivo por el que tu SSM Agent está en hibernación.

Ejecución del runbook de Automatización de Systems Manager

Requisito previo: Antes de ejecutar la automatización, asegúrate de que tu usuario o rol de AWS Identity and Access Management (IAM) tenga los permisos necesarios. Para obtener más información, consulta la sección Permisos de IAM necesarios en AWSSupport-TroubleshootManagedInstance.

Para ejecutar el runbook, sigue estos pasos:

  1. Abre el runbook AWSSupport-TroubleshootManagedInstance.
  2. En los parámetros de entrada, introduce la siguiente información:
    En InstanceId, introduce el ID de la instancia afectada. Puedes introducir manualmente el ID de la instancia o usar el selector de instancias interactivo. Si utilizas el selector de instancias, cambia el filtro de Mostrar solo la instancia administrada a Mostrar todas las instancias.
    (Opcional) En AutomationAssumeRole, introduce el nombre de recurso de Amazon (ARN) del rol de IAM que permite a Automatización de Systems Manager realizar las acciones en tu nombre. Si no especificas un rol, Automatización de Systems Manager utilizará los permisos del usuario que ejecuta el runbook.
  3. Selecciona Ejecutar.

Una vez finalizada la automatización, revisa la sección Salidas. La variable FinalOutput.Message muestra si Systems Manager administra la instancia, si se ha aprobado o no una comprobación y proporciona información sobre cómo solucionar un error.

Uso de la AWS CLI para solucionar los problemas de tu SSM Agent sin conexión

Sigue estos pasos:

  1. Comprueba que puedes acceder a la instancia mediante SSH o el protocolo de escritorio remoto.
  2. Ejecuta el comando ssm-cli de la AWS CLI para solucionar problemas de disponibilidad de instancias administradas:
    Linux y macOS
    ssm-cli get-diagnostics --output table
    Windows
    ssm-cli.exe get-diagnostics --output table
    PowerShell
    .\ssm-cli.exe get-diagnostics --output table
    Nota: En las máquinas Windows Server, debes ir al directorio C:\Program Files\Amazon\SSM antes de ejecutar el comando ssm-cli.

Si SSM Agent no funciona correctamente, es posible que el comando ssm-cli no esté disponible. Para obtener más información, consulta Solución de problemas de SSM Agent.

Solución manual de los problemas de la instancia de Amazon EC2

Cómo comprobar la conectividad con los puntos de enlace de Systems Manager en el puerto 443

La verificación de la conectividad a los puntos de enlace de Systems Manager en el puerto 443 es específica de la configuración de subred y del sistema operativo. Para obtener una lista de los puntos de enlace de Systems Manager por región, consulta Puntos de enlace de servicio.

Nota: En los siguientes ejemplos, el punto de enlace de ssmmessages es obligatorio para el Administrador de sesiones.

Instancias de EC2 de Linux

Utiliza los comandos Telnet o Netcat para verificar la conectividad con los puntos de enlace del puerto 443 para las instancias de EC2 de Linux. Netcat no está instalado previamente en las instancias de EC2. Para instalar Netcat manualmente, consulta Ncat en el sitio web de Nmap.

Nota: En los siguientes comandos, sustituye RegionID por el ID de región de tu instancia.

Comandos de Telnet:

telnet ssm.RegionID.amazonaws.com 443
telnet ec2messages.RegionID.amazonaws.com 443
telnet ssmmessages.RegionID.amazonaws.com 443

Ejemplo de conexión Telnet:

root@111800186:~# telnet ssm.us-east-1.amazonaws.com 443
Trying 52.46.141.158...
Connected to ssm.us-east-1.amazonaws.com.
Escape character is '^]'.

Para salir de Telnet, pulsa las teclas Ctrl y ]. Escribe quit y, a continuación, pulsa Intro.

Comandos de Netcat:

nc -vz ssm.RegionID.amazonaws.com 443
nc -vz ec2messages.RegionID.amazonaws.com 443
nc -vz ssmmessages.RegionID.amazonaws.com 443

Instancias de EC2 de Windows

Para comprobar la conectividad con los puntos de enlace del puerto 443 para las instancias de EC2 de Windows, ejecuta los siguientes comandos de Windows PowerShell:

Test-NetConnection ssm.RegionID.amazonaws.com -port 443
Test-NtConnection ec2messages.RegionID.amazonaws.com -port 443
Test-NetConnection ssmmessages.RegionID.amazonaws.com -port 443

Subredes públicas

Los puntos de enlace de Systems Manager son públicos. Para resolver los problemas de conectividad con las instancias de una subred pública, la tabla de enrutamiento de la instancia debe dirigir el tráfico de Internet a una puerta de enlace de Internet. Además, los grupos de seguridad de Amazon Virtual Private Cloud (Amazon VPC) y las listas de control de acceso de la red (ACL de la red) deben permitir las conexiones salientes en el puerto 443.

Subredes privadas

Utiliza direcciones IP privadas para acceder de forma privada a las API de Amazon EC2 y Systems Manager. Para resolver los problemas de conectividad con una instancia en una subred privada, la tabla de enrutamiento de la instancia debe dirigir el tráfico de Internet a una puerta de enlace de NAT. O bien, debes configurar el punto de enlace de VPC para que llegue a los puntos de enlace de Systems Manager.

Para obtener más información, consulta ¿Cómo puedo crear puntos de enlace de VPC que me permitan utilizar Systems Manager para administrar instancias de EC2 privadas sin acceso a Internet?

Nota: Cada punto de enlace de la interfaz crea una interfaz de red elástica en la subred proporcionada.

Como práctica recomendada de seguridad para las subredes privadas, comprueba la siguiente configuración:

  • El grupo de seguridad adjunto a la interfaz de red del punto de enlace de VPC permite el tráfico entrante del puerto TCP 443 desde el grupo de seguridad que está adjunto a la instancia.
  • El grupo de seguridad adjunto a la instancia permite el tráfico saliente del puerto TCP 443 a la dirección IP privada de la interfaz de red del punto de enlace de VPC.

Cómo comprobar la configuración de la administración de hosts predeterminada

Nota: Si no has activado la Configuración de la administración de hosts predeterminada, pasa a la sección Cómo comprobar que el rol de IAM correcto esté asociado a la instancia.

Si el rol de IAM que creó la configuración de administración de host predeterminada no tiene permisos suficientes para tu caso práctico, puedes agregar políticas.

Todas las instancias asociadas deben usar la versión 2 del servicio de metadatos de instancias (IMDSv2). Para comprobar la configuración de IMDSv2, utiliza la métrica MetadataNoToken de Amazon CloudWatch para determinar si no se utiliza IMDSv1. A continuación, comprueba si las instancias han pasado a IMDSv2.

La «Configuración de la administración de hosts predeterminada» está disponible en la versión 3.2.582.0 o posterior de SSM Agent. Para comprobar la versión de SSM Agent, consulta Verificación del número de versión de SSM Agent.

Para verificar la configuración de administración de hosts predeterminada, utiliza la consola de Systems Manager o la AWS CLI.

Consola de Systems Manager

Sigue estos pasos:

  1. Abre la consola de Systems Manager.
  2. En el panel de navegación, selecciona Administrador de flotas.
  3. En la lista desplegable Administración de la cuenta, elige Configuración de la administración de hosts predeterminada.
  4. Comprueba que la opción Habilitación de la configuración de la administración de hosts predeterminada esté activada.

AWS CLI

Ejecuta el comando get-service-setting de la AWS CLI para verificar la configuración de la administración de hosts predeterminada:

aws ssm get-service-setting \
--setting-id arn:aws:ssm:RegionID:AccountID:servicesetting/ssm/managed-instance/default-ec2-instance-management-role

Nota: Sustituye AccountID por el ID de tu cuenta de AWS.

Después de activar la configuración de la administración de hosts predeterminada, recibirás un resultado similar al siguiente:

{
  "ServiceSetting": {
    "SettingId": "/ssm/managed-instance/default-ec2-instance-management-role",
    "SettingValue": "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole",
     "LastModifiedDate": 1679492424.738,
    "LastModifiedUser": "arn:aws:sts::012345678910:assumed-role/role/role-name",
    "ARN": "arn:aws:ssm:ap-southeast-1:012345678910:servicesetting/ssm/managed-instance/default-ec2-instance-management-role",
    "Status": "Customized"
  }
}

Nota: Si el valor de SettingValue es $None, la «Configuración de la administración de hosts predeterminada» no está configurada.

Cómo comprobar que la «Configuración de la administración de hosts predeterminada» utiliza un rol de IAM adecuado

Se recomienda utilizar AWSSystemsManagerDefaultEC2InstanceManagementRole IAM al establecer la configuración de la administración de hosts predeterminada. Para usar un rol diferente, asegúrate de adjuntar la política de IAM AmazonSSMManagedEC2InstanceDefaultPolicy al rol.

Si tienes perfiles de instancia adjuntos a tus instancias, elimina todos los permisos que permitan la operación ssm:UpdateInstanceInformation. SSM Agent intenta usar los permisos del perfil de instancia antes de usar los permisos de la «Configuración de la administración de hosts predeterminada». Cuando se permite la operación ssm:UpdateInstanceInformation en los perfiles de instancia, esta no usa los permisos de la «Configuración de la administración de hosts predeterminada».

Cómo comprobar que el rol de IAM correcto esté asociado a la instancia

Nota: Si has activado la «Configuración de la administración de hosts predeterminada», ve a la sección Cómo comprobar la conectividad con el IMDS.

Para hacer llamadas a la API a un punto de enlace de Systems Manager, debes adjuntar la política AmazonSSMManagedInstanceCore al rol de IAM adjunto a la instancia. Si utilizas una política de IAM personalizada, confirma que esta usa los permisos que se encuentran en AmazonSSMManagedInstanceCore. Además, asegúrate de que la política de confianza del rol de IAM permita a ec2.amazonaws.com asumir el rol. Para obtener más información, consulta Configuración alternativa para permisos de instancia de EC2.

Cómo comprobar la conectividad con el IMDS

SSM Agent debe comunicarse con el IMDS para obtener información sobre la instancia. Para probar la conexión, ejecuta el siguiente comando según el sistema operativo de la instancia:

  • Linux

    nc -vz 169.254.169.254 80
  • Windows

    Test-NetConnection 169.254.169.254 -port 80

Para comprobar que el IMDS está configurado para tu instancia actual, utiliza la consola de Amazon EC2 o la AWS CLI.

Consola de Amazon EC2

Sigue estos pasos:

  1. Abre la consola de Amazon EC2.
  2. En el panel de navegación, elige Instancias y, a continuación, selecciona la instancia.
  3. Selecciona Acciones y, a continuación, selecciona Configuración de la instancia.
  4. Selecciona Modificar las opciones de metadatos de instancia.
  5. En el cuadro de diálogo, asegúrate de que el servicio de metadatos de la instancia esté habilitado.

AWS CLI

Ejecuta el comando describe-instances de la AWS CLI para verificar que el IMDS esté configurado para la instancia existente:

aws ec2 describe-instances --query "Reservations[*].Instances[*].MetadataOptions" --instance-ids i-012345678910

Resultado de ejemplo:

[
  [
    {
      "State": "applied",
      "HttpTokens": "optional",
      "HttpPutResponseHopLimit": 1,
      "HttpEndpoint": "enabled",
      "HttpProtocolIpv6": "disabled",
      "InstanceMetadataTags": "disabled"
    }
  ]
]

Nota: Si el resultado muestra «HttpTokens»: «optional», significa que se admiten tanto IMDSv1 como IMDSv2. Si el resultado muestra «HttpTokens»: «required», significa que solo se admite IMDSv2. Si el resultado muestra ** «HttpEndpoint»: «enabled»**, significa que el IMDS está activado.

Si usas un proxy en tu instancia, es posible que bloquee la conectividad con la URL de metadatos. Para evitar el bloqueo, configura el SSM Agent para que funcione con un proxy y establece no_proxy para la URL de metadatos.

Para configurar SSM Agent para que utilice un proxy, consulta la siguiente documentación:

Resolución de problemas adicionales

Si la instancia sigue sin aparecer como un nodo administrado o muestra un mensaje «Se perdió la conexión» en Systems Manager, revisa los registros de SSM Agent para continuar con la solución de problemas. Para Linux y macOS, los registros están en /var/log/amazon/ssm. Para Windows, los registros están en %PROGRAMDATA%\Amazon\SSM\Logs.

Si la instancia no informa a SSM Agent, usa el Protocolo de escritorio remoto (RDP) para Windows o SSH para Linux para recopilar los registros. Si no puedes recopilar los registros, detén la instancia y desconecta el volumen raíz. A continuación, adjunta el volumen raíz a otra instancia en la misma zona de disponibilidad como volumen secundario para obtener los registros.

Información relacionada

Referencia del runbook de Automatización de Systems Manager

Adjuntar un volumen de Amazon Elastic Block Store (Amazon EBS) a una instancia de Amazon EC2

Desconectar el volumen raíz de la instancia

Cómo hacer que un volumen de Amazon EBS esté disponible para su uso