IAM-Rolle für Amazon ECS-Aufgaben - 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.

IAM-Rolle für Amazon ECS-Aufgaben

Ihren Amazon-ECS-Aufgaben kann eine IAM-Rolle zugeordnet sein. Die in der IAM-Rolle gewährten Berechtigungen werden von den Containern übernommen, die in der Aufgabe ausgeführt werden. Diese Rolle ermöglicht es Ihrem Anwendungscode (auf dem Container), andere AWS Dienste zu verwenden. Die Aufgabenrolle ist erforderlich, wenn Ihre Anwendung auf andere AWS Dienste wie Amazon S3 zugreift.

Anmerkung

Auf diese Berechtigungen greifen der Amazon ECS-Container und die Fargate-Agenten nicht zu. Informationen zu den IAM-Berechtigungen, die Amazon ECS benötigt, um Container-Images abzurufen und die Aufgabe auszuführen, finden Sie unter. IAM-Rolle für die Amazon-ECS-Aufgabenausführung

Im Folgenden sind die Vorteile der Verwendung von Aufgabenrollen aufgeführt:

  • Isolierung von Anmeldeinformationen: Ein Container kann nur Anmeldeinformationen für die IAM-Rolle abrufen, die in der Aufgabendefinition definiert ist, zu der er gehört; ein Container hat niemals Zugriff auf Anmeldeinformationen, die für einen anderen Container bestimmt sind, der zu einer anderen Aufgabe gehört.

  • Autorisierung: Nicht autorisierte Container können nicht auf IAM-Rollen-Anmeldeinformationen zugreifen, die für andere Aufgaben definiert sind.

  • Überwachung: Die Zugriffs- und Ereignisprotokollierung ist bis verfügbar CloudTrail , um eine nachträgliche Prüfung zu gewährleisten. Die Anmeldedaten für Aufgaben haben einen KontexttaskArn, der an die Sitzung angehängt ist, sodass in den CloudTrail Protokollen angezeigt wird, welche Aufgabe welche Rolle verwendet.

Anmerkung

Wenn Sie eine IAM-Rolle für eine Aufgabe angeben, verwenden die AWS CLI oder andere SDKs in den Containern für diese Aufgabe ausschließlich die von der Aufgabenrolle bereitgestellten AWS Anmeldeinformationen und erben keine IAM-Berechtigungen mehr von der Amazon- EC2 oder externen Instance, auf der sie ausgeführt werden.

Die IAM-Rolle für Aufgaben erstellen

Wenn Sie eine IAM-Richtlinie für Ihre Aufgaben erstellen, muss die Richtlinie die Berechtigungen enthalten, die die Container in Ihren Aufgaben annehmen sollen. Sie können eine vorhandene AWS verwaltete Richtlinie verwenden oder Sie können eine benutzerdefinierte Richtlinie von Grund auf neu erstellen, die Ihren spezifischen Anforderungen entspricht. Weitere Informationen finden Sie unter Erstellen von IAM-Richtlinien im IAM-Benutzerhandbuch.

Wichtig

Für Amazon-ECS-Aufgaben (für alle Starttypen) empfehlen wir, dass Sie die IAM-Richtlinie und -Rolle für Ihre Aufgaben verwenden. Diese Anmeldeinformationen ermöglichen es Ihrer Aufgabe, AWS API-Anfragen zu stellen, ohne dass Sie aufrufen sts:AssumeRole müssen, um dieselbe Rolle zu übernehmen, die der Aufgabe bereits zugewiesen ist. Wenn Ihr Aufgabe eine Rolle verwendet, um sich selbst anzunehmen, müssen Sie eine Vertrauensrichtlinie erstellen, die ausdrücklich zulässt, dass diese Rolle sich selbst annimmt. Weitere Informationen finden Sie unter Aktualisieren einer Rollenvertrauensrichtlinie im IAM-Benutzerhandbuch.

Sobald die IAM-Richtlinie erstellt wurde, können Sie eine IAM-Rolle erstellen, Richtlinie enthält, auf Sie in Ihrer Amazon-ECS-Aufgabendefinition verweisen. Sie können die Rolle mithilfe des Anwendungsfalls Elastic-Container-Service-Aufgabe in der IAM-Konsole erstellen. Anschließend können Sie Ihre spezifische IAM-Richtlinie an die Rolle anhängen, die den Containern in Ihrer Aufgabe die gewünschten Berechtigungen erteilt. Wie Sie dazu vorgehen müssen, ist in den unten stehenden Verfahren beschrieben.

Wenn Sie mehrere Aufgabendefinitionen oder Services haben, die IAM-Berechtigungen benötigen, empfehlen wir, für die jeweiligen Aufgabendefinitionen oder Services eine Rolle mit den zur Ausführung der Aufgaben mindestens benötigten Berechtigungen zu erstellen, um den Zugriff zu minimieren, den Sie für die einzelnen Aufgaben bereitstellen.

Informationen zum Service-Endpunkt für Ihre Region finden Sie unter Service-Endpunkte im Allgemeine Amazon Web Services-Referenz Handbuch.

Die Aufgaben-IAM-Rolle muss über eine Vertrauensrichtlinie verfügen, die den ecs-tasks.amazonaws.com-Service angibt. Die sts:AssumeRole Berechtigung ermöglicht es Ihren Aufgaben, eine IAM-Rolle anzunehmen, die sich von der, die EC2 Amazon-Instance verwendet, unterscheidet. Auf diese Weise erbt Ihre Aufgabe nicht die der EC2 Amazon-Instance zugeordnete Rolle. Im Folgenden finden Sie ein Beispiel für eine Vertrauensrichtlinie. Ersetzen Sie die Regionskennung und geben Sie die AWS Kontonummer an, die Sie beim Starten von Aufgaben verwenden.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "ecs-tasks.amazonaws.com" ] }, "Action":"sts:AssumeRole", "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:ecs:us-west-2:111122223333:*" }, "StringEquals":{ "aws:SourceAccount":"111122223333" } } } ] }
Wichtig

Es wird empfohlen, bei der Erstellung Ihrer Aufgaben-IAM-Rolle die aws:SourceArn Bedingungsschlüssel oder entweder in der Vertrauensstellung aws:SourceAccount oder in der IAM-Richtlinie, die der Rolle zugeordnet ist, zu verwenden, um die Berechtigungen weiter einzuschränken und so das verwirrende Sicherheitsproblem des stellvertretenden Mitarbeiters zu vermeiden. Verwendung des aws:SourceArn Bedingungsschlüssels zur Angabe eines bestimmten Clusters wird derzeit nicht unterstützt. Sie sollten den Platzhalter verwenden, um alle Cluster anzugeben. Weitere Informationen über das Problem mit dem verwirrten Stellvertreter und darüber, wie Sie Ihr AWS Konto schützen können, finden Sie im IAM-Benutzerhandbuch unter Das Problem mit dem verwirrten Stellvertreter.

In den folgenden Verfahren wird anhand einer Beispielrichtlinie beschrieben, wie Sie eine Richtlinie zum Abrufen von Objekten aus Amazon S3 erstellen. Ersetzen Sie user input durch alle Ihre eigenen Werte.

AWS Management Console
So verwenden Sie den JSON-Richtlinieneditor zum Erstellen einer Richtlinie
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich auf der linken Seite Policies (Richtlinien).

    Wenn Sie zum ersten Mal Policies (Richtlinien) auswählen, erscheint die Seite Welcome to Managed Policies (Willkommen bei verwalteten Richtlinien). Wählen Sie Get Started.

  3. Wählen Sie oben auf der Seite Create policy (Richtlinie erstellen) aus.

  4. Wählen Sie im Bereich Policy editor (Richtlinien-Editor) die Option JSON aus.

  5. Geben Sie folgendes JSON-Richtliniendokument ein:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::my-task-secrets-bucket/*" ], "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:ecs:region:123456789012:*" }, "StringEquals":{ "aws:SourceAccount":"123456789012" } } } ] }
  6. Wählen Sie Weiter.

    Anmerkung

    Sie können jederzeit zwischen den Editoroptionen Visual und JSON wechseln. Wenn Sie jedoch Änderungen vornehmen oder im Visual-Editor Weiter wählen, strukturiert IAM Ihre Richtlinie möglicherweise um, um sie für den visuellen Editor zu optimieren. Weitere Informationen finden Sie unter Richtlinienrestrukturierung im IAM-Benutzerhandbuch.

  7. Geben Sie auf der Seite Prüfen und erstellen unter Richtlinienname einen Namen und unter Beschreibung (optional) eine Beschreibung für die Richtlinie ein, die Sie erstellen. Überprüfen Sie Permissions defined in this policy (In dieser Richtlinie definierte Berechtigungen), um die Berechtigungen einzusehen, die von Ihrer Richtlinie gewährt werden.

  8. Wählen Sie Create policy (Richtlinie erstellen) aus, um Ihre neue Richtlinie zu speichern.

AWS CLI

Ersetzen Sie user input durch alle Ihre eigenen Werte.

  1. Erstellen Sie eine Datei mit dem Namen s3-policy.json und folgendem Inhalt.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::my-task-secrets-bucket/*" ], "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:ecs:region:123456789012:*" }, "StringEquals":{ "aws:SourceAccount":"123456789012" } } } ] }
  2. Verwenden Sie den folgenden Befehl, um die IAM-Richtlinie mithilfe der JSON-Richtliniendokumentdatei zu erstellen.

    aws iam create-policy \ --policy-name taskRolePolicy \ --policy-document file://s3-policy.json

In den folgenden Verfahren wird beschrieben, wie Sie eine Task-IAM-Rolle erstellen, indem Sie eine von Ihnen erstellte IAM-Richtlinie anhängen.

AWS Management Console
So erstellen Sie die Servicerolle für Elastic Container Service (IAM-Konsole)
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM-Konsole unter. https://console.aws.amazon.com/iam/

  2. Klicken Sie im Navigationsbereich der IAM-Konsole auf Rollen, und wählen Sie dann Rolle erstellen.

  3. Wählen Sie für Vertrauenswürdige Entität die Option AWS-Service aus.

  4. Wählen Sie für Service oder Anwendungsfall Elastic Container Service und dann den Anwendungsfall Elastic Container Service Task aus.

  5. Wählen Sie Weiter.

  6. Suchen Sie unter Berechtigungen hinzufügen nach der Richtlinie, die Sie erstellt haben, und wählen Sie sie aus.

  7. Wählen Sie Weiter.

  8. Geben Sie unter Role name (Rollenname) einen Namen für Ihre Rolle ein. Geben Sie für dieses Beispiel AmazonECSTaskS3BucketRole ein, um die Rolle zu benennen.

  9. Prüfen Sie die Rolle und klicken Sie dann auf Create Role (Rolle erstellen).

AWS CLI

Ersetzen Sie user input durch alle Ihre eigenen Werte.

  1. Erstellen Sie eine Datei mit dem Namenecs-tasks-trust-policy.json, die die Vertrauensrichtlinie enthält, die für die IAM-Rolle der Aufgabe verwendet werden soll. Die Datei sollte Folgendes enthalten. Ersetzen Sie die Regionskennung und geben Sie die AWS Kontonummer an, die Sie beim Starten von Aufgaben verwenden.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "ecs-tasks.amazonaws.com" ] }, "Action":"sts:AssumeRole", "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:ecs:us-west-2:111122223333:*" }, "StringEquals":{ "aws:SourceAccount":"111122223333" } } } ] }
  2. Erstellen Sie eine IAM-Rolle namens ecsTaskRole, die im vorherigen Schritt erstellte Vertrauensrichtlinie verwendet.

    aws iam create-role \ --role-name ecsTaskRole \ --assume-role-policy-document file://ecs-tasks-trust-policy.json
  3. Rufen Sie den ARN der IAM-Richtlinie ab, die Sie mit dem folgenden Befehl erstellt haben. taskRolePolicyErsetzen Sie ihn durch den Namen der Richtlinie, die Sie erstellt haben.

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`taskRolePolicy`].Arn'
  4. Hängen Sie die von Ihnen erstellte IAM-Richtlinie an die ecsTaskRole Rolle an. Ersetzen Sie das policy-arn durch den ARN der Richtlinie, die Sie erstellt haben.

    aws iam attach-role-policy \ --role-name ecsTaskRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/taskRolePolicy

Nachdem Sie die Rolle erstellt haben, fügen Sie der Rolle zusätzliche Berechtigungen für die folgenden Funktionen hinzu.

Funktion Zusätzliche Berechtigungen

Verwenden Sie ECS Exec

ECS Exec-Berechtigungen

Verwenden Sie EC2 Instanzen (Windows und Linux)

Zusätzliche Konfiguration von EC2 Amazon-Instances

Verwenden Sie externe Instanzen

Zusätzliche Konfiguration der externen Instanz

Verwenden Sie EC2 Windows-Instanzen

Zusätzliche Konfiguration der Amazon EC2 Windows-Instance

ECS Exec-Berechtigungen

Für die ECS Exec-Funktion ist eine Task-IAM-Rolle erforderlich, um Containern die für die Kommunikation zwischen dem verwalteten SSM-Agenten (execute-commandAgenten) und dem SSM-Dienst erforderlichen Berechtigungen zu gewähren. Sie sollten einer Aufgaben-IAM-Rolle die folgenden Berechtigungen hinzufügen und die Aufgaben-IAM-Rolle in Ihre Aufgabendefinition aufnehmen. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien im IAM-Benutzerhandbuch.

Verwenden Sie die folgende Richtlinie für Ihre Aufgaben-IAM-Rolle, um die erforderlichen SSM-Berechtigungen hinzuzufügen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }

Zusätzliche Konfiguration von EC2 Amazon-Instances

Wir empfehlen Ihnen, die Berechtigungen in Ihrer Container-Instance-Rolle auf die minimale Liste von Berechtigungen, die in der verwalteten IAM-Richtlinie AmazonEC2ContainerServiceforEC2Role verwendet werden, zu begrenzen.

Ihre EC2 Amazon-Instances benötigen mindestens die Version 1.11.0 des Container-Agenten, um die Aufgabenrolle verwenden zu können. Wir empfehlen jedoch, die neueste Container-Agent-Version zu verwenden. Informationen zum Überprüfen Ihrer Agenten-Version und zum Aktualisieren auf die neueste Version finden Sie unter Überprüfen des Amazon-ECS-Container-Agenten. Wenn Sie ein Amazon ECS-optimiertes AMI verwenden, benötigt Ihre Instance mindestens einen Teil 1.11.0-1 des ecs-init Pakets. Wenn Ihre Instances das neueste Amazon-ECS-optimierte AMI verwenden, enthalten sie die erforderlichen Versionen des Container-Agenten und ecs-init. Weitere Informationen finden Sie unter Amazon ECS-optimiertes Linux AMIs.

Wenn Sie das Amazon ECS-optimierte AMI nicht für Ihre Container-Instances verwenden, fügen Sie Ihrem docker run Befehl die --net=host Option hinzu, mit der der Agent gestartet wird, und die folgenden Agentenkonfigurationsvariablen für Ihre gewünschte Konfiguration (weitere Informationen finden Sie unterKonfiguration des Amazon-ECS-Container-Agenten):

ECS_ENABLE_TASK_IAM_ROLE=true

Verwendet IAM-Rollen für Aufgaben für Container mit den Netzwerkmodi bridge und default.

ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true

Verwendet IAM-Rollen für Aufgaben für Container mit dem host-Netzwerkmodus. Diese Variable wird nur von den Agenten-Versionen 1.12.0 oder höher unterstützt.

Ein Beispiel für einen Ausführungsbefehl finden Sie unter Manuelles Aktualisieren des Amazon ECS-Container-Agenten (für nicht für Amazon AMIs ECS optimierte Systeme). Sie müssen außerdem die folgenden Netzwerkbefehle auf Ihrer Container-Instance einrichten, damit die Container in Ihren Aufgaben ihre AWS Anmeldeinformationen abrufen können:

sudo sysctl -w net.ipv4.conf.all.route_localnet=1 sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679 sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679

Sie müssen diese iptables-Regeln auf Ihrer Container-Instance speichern, damit sie einen Neustart überstehen. Sie können mithilfe der Befehle iptables-save und iptables-restore Ihre iptables-Regeln speichern und während des Boot-Prozesses wiederherstellen. Weitere Informationen finden Sie in der Dokumentation zu Ihrem entsprechenden Betriebssystem.

Um zu verhindern, dass Container, die von Aufgaben ausgeführt werden, die den awsvpc Netzwerkmodus verwenden, auf die Anmeldeinformationen zugreifen, die für das EC2 Amazon-Instance-Profil bereitgestellt wurden, und gleichzeitig die von der Aufgabenrolle bereitgestellten Berechtigungen zulassen, setzen Sie die ECS_AWSVPC_BLOCK_IMDS Agent-Konfigurationsvariable true in der Agenten-Konfigurationsdatei auf und starten Sie den Agenten neu. Weitere Informationen finden Sie unter Konfiguration des Amazon-ECS-Container-Agenten.

Um zu verhindern, dass Container, die von Aufgaben ausgeführt werden, die den bridge Netzwerkmodus verwenden, auf die Anmeldeinformationen zugreifen, die für das EC2 Amazon-Instance-Profil bereitgestellt werden, und gleichzeitig die von der Aufgabenrolle bereitgestellten Berechtigungen zulassen, indem Sie den folgenden iptables Befehl auf Ihren EC2 Amazon-Instances ausführen. Dieser Befehl wirkt sich nicht auf Container in Aufgaben aus, die den host- oder awsvpc-Netzwerkmodus verwenden. Weitere Informationen finden Sie unter Netzwerkmodus.

  • sudo yum install -y iptables-services; sudo iptables --insert DOCKER-USER 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP

    Sie müssen diese iptables Regel auf Ihrer EC2 Amazon-Instance speichern, damit sie einen Neustart übersteht. Wenn Sie das Amazon-ECS-optimierte AMI verwenden, können Sie den folgenden Befehl verwenden. Informationen über andere Betriebssysteme finden Sie in der Dokumentation des jeweiligen Betriebssystems.

    sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables

Zusätzliche Konfiguration der externen Instanz

Ihre externen Instances benötigen mindestens die Version 1.11.0 des Container-Agenten, um Task-IAM-Rollen verwenden zu können. Wir empfehlen jedoch, die neueste Container-Agent-Version zu verwenden. Informationen zum Überprüfen Ihrer Agenten-Version und zum Aktualisieren auf die neueste Version finden Sie unter Überprüfen des Amazon-ECS-Container-Agenten. Wenn Sie das Amazon-ECS-optimierte AMI verwenden, benötigt Ihre Instance mindestens 1.11.0-1 des ecs-init-Pakets. Wenn Ihre Instances das neueste Amazon-ECS-optimierte AMI verwenden, enthalten sie die erforderlichen Versionen des Container-Agenten und ecs-init. Weitere Informationen finden Sie unter Amazon ECS-optimiertes Linux AMIs.

Wenn Sie das Amazon ECS-optimierte AMI nicht für Ihre Container-Instances verwenden, fügen Sie Ihrem docker run Befehl die --net=host Option hinzu, mit der der Agent gestartet wird, und die folgenden Agentenkonfigurationsvariablen für Ihre gewünschte Konfiguration (weitere Informationen finden Sie unterKonfiguration des Amazon-ECS-Container-Agenten):

ECS_ENABLE_TASK_IAM_ROLE=true

Verwendet IAM-Rollen für Aufgaben für Container mit den Netzwerkmodi bridge und default.

ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true

Verwendet IAM-Rollen für Aufgaben für Container mit dem host-Netzwerkmodus. Diese Variable wird nur von den Agenten-Versionen 1.12.0 oder höher unterstützt.

Ein Beispiel für einen Ausführungsbefehl finden Sie unter Manuelles Aktualisieren des Amazon ECS-Container-Agenten (für nicht für Amazon AMIs ECS optimierte Systeme). Sie müssen außerdem die folgenden Netzwerkbefehle auf Ihrer Container-Instance einrichten, damit die Container in Ihren Aufgaben ihre AWS Anmeldeinformationen abrufen können:

sudo sysctl -w net.ipv4.conf.all.route_localnet=1 sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679 sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679

Sie müssen diese iptables-Regeln auf Ihrer Container-Instance speichern, damit sie einen Neustart überstehen. Sie können mithilfe der Befehle iptables-save und iptables-restore Ihre iptables-Regeln speichern und während des Boot-Prozesses wiederherstellen. Weitere Informationen finden Sie in der Dokumentation zu Ihrem entsprechenden Betriebssystem.

Zusätzliche Konfiguration der Amazon EC2 Windows-Instance

Wichtig

Dies gilt nur für Windows-Container EC2 , die Aufgabenrollen verwenden.

Für die Aufgabenrolle mit Windows-Funktionen ist eine zusätzliche Konfiguration erforderlich EC2.

  • Wenn Sie Container-Instances starten, müssen Sie die Option -EnableTaskIAMRole im Benutzerdatenskript der Container-Instances festlegen. EnableTaskIAMRole aktiviert die Task-IAM-Rollenfunktion für die Aufgaben. Zum Beispiel:

    <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole </powershell>
  • Sie müssen einen Bootstrap für Ihren Container mit den Netzwerkbefehlen ausführen, die unter Amazon ECS-Container-Bootstrap-Skript angegeben sind.

  • Sie müssen eine IAM-Rolle und -Richtlinie für Ihre Aufgaben erstellen. Weitere Informationen finden Sie unter Die IAM-Rolle für Aufgaben erstellen.

  • Die IAM-Rollen für den Anbieter der Anmeldeinformationen für die Aufgabe verwenden Port 80 auf der Container-Instance. Daher können Ihre Container nicht Port 80 für den Host-Port in Port-Mappings verwenden, wenn Sie IAM-Rollen für Aufgaben auf Ihrer Container-Instance konfigurieren. Um Ihre Container auf Port 80 bereitzustellen, empfehlen wir, dass Sie dafür einen Container mit Lastausgleich konfigurieren. Sie können Port 80 auf dem Load Balancer verwenden. Auf diese Weise kann der Datenverkehr an einen anderen Host-Port auf Ihren Container-Instances umgeleitet werden. Weitere Informationen finden Sie unter Verwenden Sie Load Balancing, um den Amazon ECS-Serviceverkehr zu verteilen.

  • Wenn Ihre Windows-Instance neu gestartet wird, müssen Sie die Proxy-Schnittstelle löschen und den Amazon-ECS-Container-Agenten erneut initialisieren, um den Anmeldeinformationsproxy wieder zu starten.

Amazon ECS-Container-Bootstrap-Skript

Bevor Container zum Abrufen von Anmeldeinformationen auf den Proxy für Anmeldeinformationen auf der Container-Instance zugreifen können, muss für den Container ein Bootstrap mit den erforderlichen Netzwerkbefehlen ausgeführt werden. Das folgende Code-Beispielskript sollte auf Ihren Containern bei deren Start ausgeführt werden.

Anmerkung

Sie müssen dieses Skript nicht ausführen, wenn Sie awsvpc-Netzwerkmodus unter Windows verwenden.

Wenn Sie Windows-Container mit Powershell ausführen, verwenden Sie das folgende Skript:

# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may # not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is distributed # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either # express or implied. See the License for the specific language governing # permissions and limitations under the License. $gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq '0.0.0.0/0' } | Sort-Object RouteMetric | Select NextHop).NextHop $ifIndex = (Get-NetAdapter -InterfaceDescription "Hyper-V Virtual Ethernet*" | Sort-Object | Select ifIndex).ifIndex New-NetRoute -DestinationPrefix 169.254.170.2/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # credentials API New-NetRoute -DestinationPrefix 169.254.169.254/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # metadata API

Wenn Sie Windows-Container ausführen, die nur die Befehls-Shell haben, verwenden Sie das folgende Skript:

# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may # not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is distributed # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either # express or implied. See the License for the specific language governing # permissions and limitations under the License. for /f "tokens=1" %i in ('netsh interface ipv4 show interfaces ^| findstr /x /r ".*vEthernet.*"') do set interface=%i for /f "tokens=3" %i in ('netsh interface ipv4 show addresses %interface% ^| findstr /x /r ".*Default.Gateway.*"') do set gateway=%i netsh interface ipv4 add route prefix=169.254.170.2/32 interface="%interface%" nexthop="%gateway%" store=active # credentials API netsh interface ipv4 add route prefix=169.254.169.254/32 interface="%interface%" nexthop="%gateway%" store=active # metadata API