Bootstrapping von Amazon ECS-Windows-Container-Instances zur Datenübergabe - 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.

Bootstrapping von Amazon ECS-Windows-Container-Instances zur Datenübergabe

Wenn Sie eine Amazon EC2 EC2-Instance starten, können Sie Benutzerdaten an die EC2-Instance übergeben. Die Daten können für allgemeine automatisierte Konfigurationsaufgaben und sogar zur Ausführung von Skripts beim Start der Instance verwendet werden. In Amazon ECS werden Benutzerdaten hauptsächlich zur Übergabe von Konfigurationsinformationen an den Docker-Daemon und den Amazon-ECS-Container-Agenten verwendet.

Sie können mehrere Arten von Benutzerdaten an Amazon EC2 übergeben, darunter auch Cloud-Boothooks, Shell-Skripts und cloud-init-Anweisungen. Weitere Informationen zu diesen und anderen Formattypen finden Sie in der Cloud-Init-Dokumentation.

Sie können diese Benutzerdaten übergeben, wenn Sie den Amazon EC2-Start-Assistenten verwenden. Weitere Informationen finden Sie unter Starten einer Amazon ECS Linux-Container-Instance.

Standardmäßige Windows-Benutzerdaten

Dieses Beispiel-Benutzerdatenskript zeigt die Standardbenutzerdaten, die Ihre Windows-Container-Instances erhalten, wenn Sie die Konsole verwenden. Das Skript unten führt Folgendes durch:

  • Setzt den Clusternamen auf den Namen, den Sie eingegeben haben.

  • Legt die IAM-Rollen für Aufgaben fest.

  • Legt json-file und awslogs als verfügbare Protokolltreiber fest.

Darüber hinaus sind die folgenden Optionen verfügbar, wenn Sie den awsvpc-Netzwerkmodus verwenden.

  • EnableTaskENI: Dieses Flag aktiviert das Aufgabennetzwerk und ist erforderlich, wenn Sie den awsvpc-Netzwerkmodus verwenden.

  • AwsvpcBlockIMDS: Dieses optionale Flag blockiert den IMDS-Zugriff für die Task-Container, die im awsvpc-Netzwerkmodus ausgeführt werden.

  • AwsvpcAdditionalLocalRoutes: Mit diesem optionalen Flag können Sie zusätzliche Routen haben.

    Ersetzen Sie ip-address mit der IP-Adresse für die zusätzlichen Routen, zum Beispiel 172.31.42.23/32.

Sie können dieses Skript für Ihre eigenen Container-Instances verwenden (vorausgesetzt, sie werden von dem für Amazon ECS optimierten Windows-Server-AMI gestartet).

Ersetzen Sie die Zeile -Cluster cluster-name, um Ihren eigenen Clusternamen anzugeben.

<powershell> Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' -EnableTaskENI -AwsvpcBlockIMDS -AwsvpcAdditionalLocalRoutes '["ip-address"]' </powershell>

Für Windows-Aufgaben, die für die Verwendung des awslogs-Protokolltreibers konfiguriert sind, müssen Sie auch die ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE-Umgebungsvariable für die Container-Instance festlegen. Verwenden Sie die folgende Syntax:

Ersetzen Sie die Zeile -Cluster cluster-name, um Ihren eigenen Clusternamen anzugeben.

<powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>

Benutzerdaten für die Installation des Windows-Agenten

Mit diesem Beispiel-Benutzerdatenskript wird der Amazon-ECS-Container-Agent auf einer Instance installiert, die mit einem Windows_Server-2016-English-Full-Containers-AMI gestartet wurde. Es wurde anhand der Anweisungen zur Agenteninstallation auf der GitHubREADME-Seite des Amazon ECS Container Agent-Repositorys angepasst.

Anmerkung

Dieses Skript dient als Beispiel. Der Einstieg in Windows-Container ist mit dem Amazon-ECS-optimierten Windows Server-AMI wesentlich einfacher. Weitere Informationen finden Sie unter Erstellen eines Amazon ECS-Clusters für den Starttyp Fargate.

Sie können dieses Skript für Ihre eigenen Container-Instances verwenden (vorausgesetzt, sie werden mit einer Version des Windows_Server-2016-English-Full-Container-AMI gestartet). Achten Sie darauf, die Zeile windows zu ersetzen, um Ihren eigenen Cluster-Namen anzugeben (wenn Sie keinen Cluster namens windows verwenden).

<powershell> # Set up directories the agent uses New-Item -Type directory -Path ${env:ProgramFiles}\Amazon\ECS -Force New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS -Force New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS\data -Force # Set up configuration $ecsExeDir = "${env:ProgramFiles}\Amazon\ECS" [Environment]::SetEnvironmentVariable("ECS_CLUSTER", "windows", "Machine") [Environment]::SetEnvironmentVariable("ECS_LOGFILE", "${env:ProgramData}\Amazon\ECS\log\ecs-agent.log", "Machine") [Environment]::SetEnvironmentVariable("ECS_DATADIR", "${env:ProgramData}\Amazon\ECS\data", "Machine") # Download the agent $agentVersion = "latest" $agentZipUri = "https://s3.amazonaws.com/amazon-ecs-agent/ecs-agent-windows-$agentVersion.zip" $zipFile = "${env:TEMP}\ecs-agent.zip" Invoke-RestMethod -OutFile $zipFile -Uri $agentZipUri # Put the executables in the executable directory. Expand-Archive -Path $zipFile -DestinationPath $ecsExeDir -Force Set-Location ${ecsExeDir} # Set $EnableTaskIAMRoles to $true to enable task IAM roles # Note that enabling IAM roles will make port 80 unavailable for tasks. [bool]$EnableTaskIAMRoles = $false if (${EnableTaskIAMRoles}) { $HostSetupScript = Invoke-WebRequest https://raw.githubusercontent.com/aws/amazon-ecs-agent/master/misc/windows-deploy/hostsetup.ps1 Invoke-Expression $($HostSetupScript.Content) } # Install the agent service New-Service -Name "AmazonECS" ` -BinaryPathName "$ecsExeDir\amazon-ecs-agent.exe -windows-service" ` -DisplayName "Amazon ECS" ` -Description "Amazon ECS service runs the Amazon ECS agent" ` -DependsOn Docker ` -StartupType Manual sc.exe failure AmazonECS reset=300 actions=restart/5000/restart/30000/restart/60000 sc.exe failureflag AmazonECS 1 Start-Service AmazonECS </powershell>