HTTP-Proxykonfiguration für Linux-Container-Instances - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

HTTP-Proxykonfiguration für Linux-Container-Instances

Sie können Ihre Amazon-ECS-Container-Instances für die Verwendung eines HTTP-Proxys sowohl für den Amazon-ECS-Container-Agenten als auch für den Docker-Daemon konfigurieren. Das ist praktisch, wenn Ihre Container-Instances keinen externen Netzwerkzugriff über ein Amazon VPC-Internet-Gateway, NAT-Gateway oder eine Instance haben.

Um Ihre Amazon-ECS-Linux-Container-Instance für die Verwendung eines HTTP-Proxys zu konfigurieren, bestimmen Sie beim Starten die folgenden Variablen in den relevanten Dateien (mit Amazon EC2-Benutzerdaten). Sie können die Konfigurationsdatei auch manuell bearbeiten und die Agenten anschließend neu starten.

/etc/ecs/ecs.config (Amazon Linux 2 und AmazonLinux AMI)
HTTP_PROXY=10.0.0.131:3128

Legen Sie diesen Wert auf den Host-Namen (oder die IP-Adresse) und die Portnummer eines HTTP-Proxys fest, den der Amazon ECS-Agent verwenden soll, um eine Verbindung zum Internet herzustellen. Beispielsweise haben Ihre Container-Instances vielleicht keinen externen Netzwerkzugriff über ein Amazon VPC-Internet-Gateway, NAT-Gateway oder eine Instance.

NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock

Setzen Sie diesen Wert auf 169.254.169.254,169.254.170.2,/var/run/docker.sock, um die Amazon-EC2-Instance-Metadaten, IAM-Rollen für Aufgaben und Docker-Daemon-Datenverkehr aus dem Proxy zu filtern.

/etc/systemd/system/ecs.service.d/http-proxy.conf (nur Amazon Linux 2)
Environment="HTTP_PROXY=10.0.0.131:3128/"

Setzen Sie diesen Wert auf den Hostname (oder die IP-Adresse) und die Portnummer eines HTTP-Proxys, sodass mit ecs-init eine Internetverbindung aufgebaut werden kann. Beispielsweise haben Ihre Container-Instances vielleicht keinen externen Netzwerkzugriff über ein Amazon VPC-Internet-Gateway, NAT-Gateway oder eine Instance.

Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"

Setzen Sie diesen Wert auf 169.254.169.254,169.254.170.2,/var/run/docker.sock, um die Amazon-EC2-Instance-Metadaten, IAM-Rollen für Aufgaben und Docker-Daemon-Datenverkehr aus dem Proxy zu filtern.

/etc/init/ecs.override (nur Amazon-Linux-AMI)
env HTTP_PROXY=10.0.0.131:3128

Setzen Sie diesen Wert auf den Hostname (oder die IP-Adresse) und die Portnummer eines HTTP-Proxys, sodass mit ecs-init eine Internetverbindung aufgebaut werden kann. Beispielsweise haben Ihre Container-Instances vielleicht keinen externen Netzwerkzugriff über ein Amazon VPC-Internet-Gateway, NAT-Gateway oder eine Instance.

env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock

Setzen Sie diesen Wert auf 169.254.169.254,169.254.170.2,/var/run/docker.sock, um die Amazon-EC2-Instance-Metadaten, IAM-Rollen für Aufgaben und Docker-Daemon-Datenverkehr aus dem Proxy zu filtern.

/etc/systemd/system/docker.service.d/http-proxy.conf (nur Amazon Linux 2)
Environment="HTTP_PROXY=http://10.0.0.131:3128"

Setzen Sie diesen Wert auf den Hostname (oder die IP-Adresse) und die Portnummer eines HTTP-Proxys, sodass der Docker-Daemon damit eine Internetverbindung aufbauen kann. Beispielsweise haben Ihre Container-Instances vielleicht keinen externen Netzwerkzugriff über ein Amazon VPC-Internet-Gateway, NAT-Gateway oder eine Instance.

Environment="NO_PROXY=169.254.169.254"

Setzen Sie diesen Wert auf 169.254.169.254, um EC2 Instance-Metadaten aus dem Proxy zu filtern.

/etc/sysconfig/docker (Amazon Linux AMI und nur Amazon Linux 2)
export HTTP_PROXY=http://10.0.0.131:3128

Setzen Sie diesen Wert auf den Hostname (oder die IP-Adresse) und die Portnummer eines HTTP-Proxys, sodass der Docker-Daemon damit eine Internetverbindung aufbauen kann. Beispielsweise haben Ihre Container-Instances vielleicht keinen externen Netzwerkzugriff über ein Amazon VPC-Internet-Gateway, NAT-Gateway oder eine Instance.

export NO_PROXY=169.254.169.254,169.254.170.2

Setzen Sie diesen Wert auf 169.254.169.254, um EC2 Instance-Metadaten aus dem Proxy zu filtern.

Die Festlegung dieser Umgebungsvariablen in den oben genannten Dateien wirkt sich nur auf den Amazon ECS Container-Agenten, ecs-init und den Docker-Daemon aus. Sie konfigurieren keine anderen Services (z. B. yum) für die Nutzung des Proxy.

Beispiel Amazon Linux-HTTP-Proxy-Benutzerdatenskript

Das folgende Beispielbenutzerdaten-cloud-boothook-Skript konfiguriert den Amazon-ECS-Container-Agenten, ecs-init, den Docker-Daemon und yum zur Verwendung eines von Ihnen spezifizierten HTTP-Proxys. Sie können auch ein Cluster festlegen, in dem sich die Container-Instance selbst registriert.

Für die Verwendung dieses Skripts befolgen Sie beim Starten einer Container-Instance die Schritte in Starten einer Amazon ECS Linux-Container-Instance und in Schritt 7. Anschließend kopieren Sie das folgende cloud-boothook-Skript in das Feld User data (achten Sie darauf, die roten Beispielwerte durch Ihre eigenen Proxy- und Clusterinformationen zu ersetzen).

Anmerkung

Das Benutzerdatenskript unterstützt nur Amazon Linux 2 und Amazon-Linux-AMI-Varianten des Amazon-ECS-optimierten AMI.

#cloud-boothook # Configure Yum, the Docker daemon, and the ECS agent to use an HTTP proxy # Specify proxy host, port number, and ECS cluster name to use PROXY_HOST=10.0.0.131 PROXY_PORT=3128 CLUSTER_NAME=proxy-test if grep -q 'Amazon Linux release 2' /etc/system-release ; then OS=AL2 echo "Setting OS to Amazon Linux 2" elif grep -q 'Amazon Linux AMI' /etc/system-release ; then OS=ALAMI echo "Setting OS to Amazon Linux AMI" else echo "This user data script only supports Amazon Linux 2 and Amazon Linux AMI." fi # Set Yum HTTP proxy if [ ! -f /var/lib/cloud/instance/sem/config_yum_http_proxy ]; then echo "proxy=http://$PROXY_HOST:$PROXY_PORT" >> /etc/yum.conf echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_yum_http_proxy fi # Set Docker HTTP proxy (different methods for Amazon Linux 2 and Amazon Linux AMI) # Amazon Linux 2 if [ $OS == "AL2" ] && [ ! -f /var/lib/cloud/instance/sem/config_docker_http_proxy ]; then mkdir /etc/systemd/system/docker.service.d cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=http://$PROXY_HOST:$PROXY_PORT/" Environment="HTTPS_PROXY=https://$PROXY_HOST:$PROXY_PORT/" Environment="NO_PROXY=169.254.169.254,169.254.170.2" EOF systemctl daemon-reload if [ "$(systemctl is-active docker)" == "active" ] then systemctl restart docker fi echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_docker_http_proxy fi # Amazon Linux AMI if [ $OS == "ALAMI" ] && [ ! -f /var/lib/cloud/instance/sem/config_docker_http_proxy ]; then echo "export HTTP_PROXY=http://$PROXY_HOST:$PROXY_PORT/" >> /etc/sysconfig/docker echo "export HTTPS_PROXY=https://$PROXY_HOST:$PROXY_PORT/" >> /etc/sysconfig/docker echo "export NO_PROXY=169.254.169.254,169.254.170.2" >> /etc/sysconfig/docker echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_docker_http_proxy fi # Set ECS agent HTTP proxy if [ ! -f /var/lib/cloud/instance/sem/config_ecs-agent_http_proxy ]; then cat <<EOF > /etc/ecs/ecs.config ECS_CLUSTER=$CLUSTER_NAME HTTP_PROXY=$PROXY_HOST:$PROXY_PORT NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock EOF echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_ecs-agent_http_proxy fi # Set ecs-init HTTP proxy (different methods for Amazon Linux 2 and Amazon Linux AMI) # Amazon Linux 2 if [ $OS == "AL2" ] && [ ! -f /var/lib/cloud/instance/sem/config_ecs-init_http_proxy ]; then mkdir /etc/systemd/system/ecs.service.d cat <<EOF > /etc/systemd/system/ecs.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=$PROXY_HOST:$PROXY_PORT/" Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock" EOF systemctl daemon-reload if [ "$(systemctl is-active ecs)" == "active" ]; then systemctl restart ecs fi echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_ecs-init_http_proxy fi # Amazon Linux AMI if [ $OS == "ALAMI" ] && [ ! -f /var/lib/cloud/instance/sem/config_ecs-init_http_proxy ]; then cat <<EOF > /etc/init/ecs.override env HTTP_PROXY=$PROXY_HOST:$PROXY_PORT env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock EOF echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_ecs-init_http_proxy fi