Comment résoudre les problèmes lorsque je configure l'Agent SSM afin d'utiliser un proxy pour gérer mon instance Amazon EC2 ?

Date de la dernière mise à jour : 20/04/2021

Je reçois des erreurs lorsque j'utilise un proxy avec l'Agent SSM pour gérer mon instance Amazon Elastic Compute Cloud (Amazon EC2) avec AWS Systems Manager. Comment puis-je résoudre les problèmes de proxy ?

Brève description

Vous pouvez utiliser Systems Manager pour gérer vos instances Amazon EC2. Toutefois, si les instances se trouvent derrière un proxy, vous devez configurer l'Agent SSM pour communiquer avec les points de terminaison Amazon via votre proxy. Si l'Agent SSM n'est pas correctement configuré, vous recevez un message d'erreur similaire à celui-ci :

Post https://ssm.RegionID.amazonaws.com/: proxyconnect tcp: dial tcp xxx.xxx.xxx.xxx:yyyy: i/o timeout

Solution

Pour résoudre les problèmes de proxy, procédez comme suit :

Vérifiez que l'instance EC2 peut accéder à votre serveur proxy

Instances Windows EC2

Vous pouvez utiliser la commande Windows PowerShell suivante pour vérifier la connectivité à votre proxy. Dans l'exemple suivant, remplacez hostname (Nom d'hôte) par le nom d'hôte de votre proxy et remplacez port par le port de votre proxy.

> Test-NetConnection hostname -port port

Sortie attendue :

ComputerName     : hostname
RemoteAddress    : xxx.xxx.xxx.xxx
RemotePort       : port
InterfaceAlias   : Ethernet
SourceAddress    : YYY.YYY.YYY.YYY
TcpTestSucceeded : True
PS C:\Windows\system32>

Instances Linux EC2

Vous pouvez utiliser les commande telnet ou netcat suivantes pour vérifier la connectivité à votre proxy. Dans les exemples suivants, remplacez hostname (Nom d'hôte) par le nom d'hôte de votre proxy et remplacez port par le port de votre proxy.

Telnet

$ telnet hostname port

Sortie attendue :

Trying xxx.xxx.xxx.xxx...
Connected to hostname.
Escape character is '^]'.

Netcat

$ nc -vz hostname port'

Sortie attendue :

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to xxx.xxx.xxx.xxx:YYYY.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

Remarque : Netcat n'est pas préinstallé sur les instances Amazon EC2. Pour installer manuellement Netcat, consultez la page Ncat sur le site web de Nmap.

Vérifiez que votre instance EC2 peut atteindre le point de terminaison Systems Manager via le serveur proxy

Exécutez la commande suivante pour vérifier que votre instance peut atteindre le point de terminaison Systems Manager via votre serveur proxy. La réception d'un code d'erreur http 4xx indique que vous pouvez atteindre le point de terminaison via votre serveur proxy.

Remarque : dans les exemples de commandes suivants, remplacez RegionID (ID de région) par votre région AWS, hostname (Nom d'hôte) par le nom d'hôte de votre proxy et port par le port de votre proxy.

Instances Windows EC2

> (invoke-webrequest https://ssm.RegionID.amazonaws.com -DisableKeepAlive -UseBasicParsing -Method head -Proxy http://hostname:port )

Sortie attendue :

invoke-webrequest : The remote server returned an error: (404) Not Found.

Instances Linux EC2

$  curl -k --proxy http://hostname:port -m 5 -s -o /dev/null -w "%{http_code}" https://ssm.RegionID.amazonaws.com

Sortie attendue :

404

Vérifiez que l'Agent SSM est configuré pour utiliser vos informations proxy

Instances Windows EC2

Vous devez consulter le journal de l'Agent SSM pour vérifier que les paramètres proxy sont appliqués comme illustré dans l'exemple suivant. Saisissez la commande suivante :

> type C:\ProgramData\Amazon\SSM\Logs\amazon-ssm-agent.log | findstr -i "proxy"

Sortie attendue :

2021-03-18 19:06:16 INFO Getting IE proxy configuration for current user: The operation completed successfully.
2021-03-18 19:06:16 INFO Getting WinHTTP proxy default configuration: The operation completed successfully.
2021-03-18 19:06:16 INFO Proxy environment variables:
2021-03-18 19:06:16 INFO http_proxy: hostname:port
2021-03-18 19:06:16 INFO https_proxy:
2021-03-18 19:06:16 INFO no_proxy: 169.254.169.254

Pour plus d'informations, consultez la section Configurer l'Agent SSM pour utiliser un proxy pour les instances Windows Server.

Instances Linux EC2

Tout d'abord, exécutez la commande suivante pour vérifier si l'Agent SSM utilise actuellement les variables de proxy requises en vérifiant la variable d'environnement de processus :

sudo cat /proc/$(pidof amazon-ssm-agent)/environ | xargs -0 -L1 -I{} echo {}

Sortie attendue :

[root@host123~]# sudo cat /proc/$(pidof amazon-ssm-agent)/environ | xargs -0 -L1 -I{} echo {}
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
http_proxy=http://Hostname:Port
https_proxy=http://Hostname:Port
no_proxy=169.254.169.254

Ensuite, si la sortie n'inclut pas les variables de proxy, suivez les instructions ci-dessous pour votre type d'instance afin de vérifier et de mettre à jour les fichiers concernés.

Instances Linux EC2 basées sur un upstart tel que Ubuntu 14.04

Vérifiez que le fichier amazon-ssm-agent.override contient les configurations requises. Entrez la commande suivante et confirmez que votre sortie correspond à la sortie attendue illustrée dans l'exemple. Pour plus d'informations, consultez la section Configurer l'Agent SSM afin d'utiliser un proxy (Upstart).

Important : si vous mettez à jour le fichier amazon-ssm-agent.override, veillez à redémarrer l'Agent SSM une fois le fichier modifié.

$ cat  /etc/init/amazon-ssm-agent.override

Sortie attendue pour un serveur proxy HTTP :

env http_proxy=http://hostname:port
env https_proxy=http://hostname:port
env no_proxy=169.254.169.254

Sortie attendue pour un serveur proxy HTTPS :

env http_proxy=http://hostname:port
env https_proxy=https://hostname:port
env no_proxy=169.254.169.254

Instances Linux EC2 basées sur Ubuntu 16.04 ou sur une version ultérieure avec l'Agent SSM installé à l'aide d'un snap

Entrez la commande suivante et confirmez que les informations de proxy correspondent à la sortie attendue illustrée dans l'exemple. Pour plus d'informations, consultez la section Configuration de l'Agent SSM afin d'utiliser un proxy (systemd).

Important : si vous mettez à jour le fichier amazon-ssm-agent.override, veillez à redémarrer l'Agent SSM une fois le fichier modifié.

$ cat /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/override.conf

Sortie attendue pour un serveur proxy HTTP :

[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=http://hostname:port"
Environment="no_proxy=169.254.169.254"

Sortie attendue pour un serveur proxy HTTPS :

[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=https://hostname:port"
Environment="no_proxy=169.254.169.254"

Instances Linux EC2 basées sur Amazon Linux 2

Entrez la commande suivante et confirmez que les informations de proxy correspondent à la sortie attendue illustrée dans l'exemple. Pour plus d'informations, consultez la section Configuration de l'Agent SSM afin d'utiliser un proxy (systemd).

Important : si vous mettez à jour le fichier amazon-ssm-agent.override, veillez à redémarrer l'Agent SSM une fois le fichier modifié.

$ cat /etc/systemd/system/amazon-ssm-agent.service.d/override.conf

Sortie attendue pour un serveur proxy HTTP :

[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=http://hostname:port"
Environment="no_proxy=169.254.169.254"

Sortie attendue pour un serveur proxy HTTPS :

[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=https://hostname:port"
Environment="no_proxy=169.254.169.254"

Instances Linux EC2 basées sur d'autres systèmes d'exploitation

Entrez la commande suivante et confirmez que les informations de proxy correspondent à la sortie attendue illustrée dans l'exemple. Pour plus d'informations, consultez la section Configuration de l'Agent SSM afin d'utiliser un proxy (systemd).

Important : si vous mettez à jour le fichier amazon-ssm-agent.override, veillez à redémarrer l'Agent SSM une fois le fichier modifié.

$ cat /etc/systemd/system/amazon-ssm-agent.service.d/amazon-ssm-agent.override

Sortie attendue pour un serveur proxy HTTP :

[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=http://hostname:port"
Environment="no_proxy=169.254.169.254"

Sortie attendue pour un serveur proxy HTTPS :

[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=https://hostname:port"
Environment="no_proxy=169.254.169.254"

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?