Zusätzliche Konfiguration für Windows-IAM-Rollen für Aufgaben - Amazon Elastic Container Service

Zusätzliche Konfiguration für Windows-IAM-Rollen für Aufgaben

Die IAM-Rollen für Aufgaben mit Windows-Funktionen erfordern eine zusätzliche Konfiguration, aber ein Großteil dieser Konfiguration ähnelt der Konfiguration von IAM-Rollen für Aufgaben auf Linux-Container-Instances. Um IAM-Rollen für Aufgaben für Windows-Container zu konfigurieren, müssen die folgenden Anforderungen erfüllt sein.

  • 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 IAM-Rollen für Aufgaben – Bootstrap-Skript für Container angegeben sind.

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

  • Ihr Container muss ein AWS-SDK verwenden, das „IAM-Rollen für Aufgaben“ unterstützt. Weitere Informationen finden Sie unter Verwendung eines unterstützten AWS-SDK.

  • Sie müssen die für Ihre Aufgaben erstellte IAM-Rolle angeben, wenn Sie die Aufgabendefinition registrieren – oder als Übersteuerung bei Ausführung der Aufgabe. Weitere Informationen finden Sie unter Angeben einer IAM-Rolle für Ihre Aufgaben.

  • 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 Service-Load Balancing.

  • 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.

IAM-Rollen für Aufgaben – Bootstrap-Skript für Container

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