Arranque de instancias de contenedor de Windows de Amazon ECS para la transferencia de datos - Amazon Elastic Container Service

Arranque de instancias de contenedor de Windows de Amazon ECS para la transferencia de datos

Cuando se lanza una instancia de Amazon EC2, puede transferir los datos de usuario a la instancia de EC2. Los datos se pueden utilizar para llevar a cabo tareas de configuración automatizadas comunes e incluso ejecutar scripts cuando la instancia arranca. En Amazon ECS, los casos de uso más comunes para los datos de usuario consisten en transferir la información de configuración al daemon de Docker y al agente de contenedor de Amazon ECS.

Puede transferir varios tipos de datos de usuario a Amazon EC2, incluidos cloud boothooks, scripts de shell y directivas cloud-init. Para obtener más información acerca de estos u otros tipos de formato, consulte la documentación de Cloud-Init.

Puede transferir estos datos de usuario cuando utilice el asistente de lanzamiento de Amazon EC2. Para obtener más información, consulte Lanzamiento de una instancia de contenedor de Linux de Amazon ECS.

Datos de usuario de Windows predeterminados

Este script de datos de usuario de ejemplo muestra los datos de usuario predeterminados que reciben las instancias de contenedor de Windows si se utiliza la consola. El script a continuación hace lo siguiente:

  • Establece el nombre del clúster con el nombre que ha ingresado.

  • Establece los roles de IAM para las tareas.

  • Establece json-file y awslogs como los controladores de registro disponibles.

Además, las siguientes opciones están disponibles cuando se utiliza el modo de red awsvpc.

  • EnableTaskENI: este indicador activa las redes de tareas y se requiere cuando se utiliza el modo de red awsvpc.

  • AwsvpcBlockIMDS: este indicador opcional bloquea el acceso a IMDS para los contenedores de tareas que se ejecutan en el modo de red awsvpc.

  • AwsvpcAdditionalLocalRoutes: este indicador opcional le permite disponer de rutas adicionales.

    Sustituya ip-address por la dirección IP para las rutas adicionales, por ejemplo, 172.31.42.23/32.

Puede utilizar este script para sus propias instancias de contenedor (siempre que se lancen desde la AMI de Windows Server optimizada para Amazon ECS).

Sustituya la línea -Cluster cluster-name para especificar el nombre de su propio clúster.

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

Para las tareas de Windows configuradas para utilizar el controlador de registros awslogs, debe también establecer la variable de entorno ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE en la instancia del contenedor. Utilice la siguiente sintaxis.

Sustituya la línea -Cluster cluster-name para especificar el nombre de su propio clúster.

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

Datos de usuario de la instalación del agente de Windows

Este script de datos de usuario de ejemplo instala el agente de contenedor de Amazon ECS en una instancia lanzada mediante una AMI Windows_Server-2016-English-Full-Containers. Se ha adaptado a partir de las instrucciones de instalación del agente que figuran en la página README del repositorio de GitHub del agente de contenedor de Amazon ECS.

nota

Este script se comparte para fines ilustrativos. Resulta mucho más sencillo comenzar a utilizar los contenedores de Windows mediante la AMI de Windows Server optimizada para Amazon ECS. Para obtener más información, consulte Creación de un clúster de Amazon ECS para el tipo de lanzamiento de Fargate.

Puede utilizar este script para sus propias instancias de contenedor (siempre que se lancen con una versión de la AMI Windows_Server-2016-English-Full-Containers). Asegúrese de sustituir la línea windows para especificar su propio nombre de clúster (si no está utilizando un clúster denominado 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>