

# Arranque de instancias de contenedor de Windows de Amazon ECS para la transferencia de datos
<a name="bootstrap_windows_container_instance"></a>

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 poner en marcha 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](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). 

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](launch_container_instance.md).

## Datos de usuario de Windows predeterminados
<a name="windows-default-userdata"></a>

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
<a name="agent-service-userdata"></a>

Este script de datos de usuario de ejemplo instala el agente de contenedor de Amazon ECS en una instancia lanzada mediante una AMI **Windows\$1Server-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](https://github.com/aws/amazon-ecs-agent).

**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 cargas de trabajo de Fargate](create-cluster-console-v2.md).

Para obtener información sobre cómo instalar el agente de Amazon ECS en Windows Server 2022 Full, consulte [Issue 3753](https://github.com/aws/amazon-ecs-agent/issues/3753) en GitHub.

Puede utilizar este script para sus propias instancias de contenedor (siempre que se lancen con una versión de la AMI **Windows\$1Server-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>
```