Avvio delle istanze di container Amazon ECS Windows per il trasferimento di dati - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Avvio delle istanze di container Amazon ECS Windows per il trasferimento di dati

Quando avvii un'istanza Amazon EC2, puoi passare i dati utente all'istanza EC2. I dati possono essere utilizzati per eseguire attività di configurazione automatizzate di routine e anche per l'esecuzione di script all'avvio dell'istanza. Per Amazon ECS, i casi di utilizzo più comuni per i dati utente riguardano la trasmissione di informazioni sulla configurazione al daemon Docker e all'agente del container Amazon ECS.

Puoi trasferire diversi tipi di dati utente ad Amazon EC2, ad esempio hook di avvio del cloud, script di shell e direttive cloud-init. Per ulteriori informazioni su questi e altri tipi di formato, consulta la documentazione su cloud-init.

È possibile passare questi dati utente quando si utilizza la procedura guidata di avvio di Amazon EC2. Per ulteriori informazioni, consulta Avvio di un'istanza di container Linux di Amazon ECS.

Data utente di Windows di default

Questo script di dati utente di esempio mostra i dati utente predefiniti che le istanze di container Windows ricevono se si utilizza la console. Lo script sottostante esegue le seguenti operazioni:

  • Imposta il nome del cluster in base al nome inserito.

  • Imposta i ruoli IAM per i processi.

  • Imposta json-file e awslogs come i driver di log disponibili.

Inoltre, le seguenti opzioni sono disponibili quando si utilizza la modalità di rete awsvpc.

  • EnableTaskENI: questo flag attiva la rete di processi ed è necessario quando si utilizza la modalità di rete awsvpc.

  • AwsvpcBlockIMDS: questo flag facoltativo blocca l'accesso IMDS per i contenitori di processi in esecuzione con la modalità di rete awsvpc.

  • AwsvpcAdditionalLocalRoutes: questo flag facoltativo consente di avere route aggiuntive.

    Sostituisci ip-address con l'indirizzo IP per le route aggiuntive, ad esempio 172.31.42.23/32.

Puoi usare questo script per le istanze di container, purché siano avviate da un'AMI Windows Server ottimizzata per Amazon ECS.

Sostituisci la riga -Cluster cluster-name per specificare il nome del cluster.

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

Per le attività di Windows configurate per utilizzare il driver di registrazione awslogs, è necessario impostare anche la variabile di ambiente ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE nell'istanza di container. Utilizzare la seguente sintassi.

Sostituisci la riga -Cluster cluster-name per specificare il nome del cluster.

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

Dati utente dell'installazione dell'agente Windows

In questo esempio lo script dei dati utente installa l'agente del container di Amazon ECS su un'istanza avviata con un'AMI Windows_Server-2016-English-Full-Containers. È stato adattato dalle istruzioni di installazione dell'agente nella pagina README del GitHubrepository Amazon ECS Container Agent.

Nota

Questo script è condiviso a scopo esemplificativo. È molto più facile iniziare a utilizzare i container di Windows con l'AMI Windows Server ottimizzata per Amazon ECS. Per ulteriori informazioni, consulta Creazione di un cluster Amazon ECS per il tipo di lancio Fargate.

Puoi usare questo script per le tue istanze di container (purché siano avviate con una versione dell'AMI Windows_Server-2016-English-Full-Containers). Assicurati di sostituire la riga windows per specificare il nome del tuo cluster (se non utilizzi un cluster denominato windows).

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