

# Inicialização de instâncias de contêiner do Windows no Amazon ECS para transmitir dados
<a name="bootstrap_windows_container_instance"></a>

Ao iniciar uma instância do Amazon EC2, é possível transmitir dados do usuário para a instância do EC2. Os dados podem ser usados para realizar tarefas de configuração automatizadas em comum e até mesmo executar scripts na inicialização da instância. Para o Amazon ECS, os casos de uso mais comuns para dados de usuário devem transmitir informações de configuração para o daemon do Docker e o agente de contêiner do Amazon ECS.

É possível transmitir vários tipos de dados de usuário para o Amazon EC2, inclusive boothooks de nuvem, scripts de shell e diretivas `cloud-init`. Para obter mais informações sobre esses e outros tipos de formato, consulte a documentação [Cloud-Init](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). 

É possível transmitir esses dados do usuário ao usar o assistente de inicialização do Amazon EC2. Para obter mais informações, consulte [Iniciar uma instância de contêiner do Linux do Amazon ECS](launch_container_instance.md).

## Dados dos usuário do Windows padrão
<a name="windows-default-userdata"></a>

Este exemplo de script de dados do usuário mostra os dados do usuário padrão que as instâncias de contêiner do Windows receberão se você usar o console. O script abaixo faz o seguinte:
+ Define o nome do cluster para o nome que você inseriu.
+ Define as funções do IAM para tarefas.
+ Define `json-file` e `awslogs` como os drivers de registro em log disponíveis.

Além disso, as seguintes opções estão disponíveis quando for usado o modo de rede `awsvpc`.
+ `EnableTaskENI`:este sinalizador ativa a rede de tarefas e é necessário quando é usado o modo de rede `awsvpc`.
+ `AwsvpcBlockIMDS`: este sinalizador opcional bloqueia o acesso IMDS para os contêineres de tarefas em execução no modo de rede `awsvpc`.
+ `AwsvpcAdditionalLocalRoutes`: este sinalizador opcional permite que você tenha rotas adicionais.

  Substitua `ip-address` pelo o endereço IP das rotas adicionais, por exemplo, 172.31.42.23/32.

É possível usar esse script nas próprias instâncias de contêiner (desde que elas sejam iniciadas em AMIs Windows Server otimizadas para o Amazon ECS). 

Substitua a linha `-Cluster cluster-name` para especificar o nome do seu próprio cluster.

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

 Para tarefas do Windows configuradas para usar o driver de log `awslogs`, também é necessário definir a variável de ambiente `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` na instância de contêiner. Use a sintaxe a seguir. 

Substitua a linha `-Cluster cluster-name` para especificar o nome do seu próprio cluster.

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

## Dados do usuário da instalação do agente do Windows
<a name="agent-service-userdata"></a>

Este exemplo de script de dados do usuário instala o agente de contêiner do Amazon ECS em uma instância iniciada com uma AMI **Windows\$1Server-2016-English-Full-Containers**. Ele foi adaptado com base nas instruções de instalação do agente na página README [Repositório do GitHub do Amazon ECS Container Agent](https://github.com/aws/amazon-ecs-agent).

**nota**  
Esse script é compartilhado com finalidades de exemplo. É muito mais fácil começar a usar os contêineres do Windows usando a AMI do Windows Server otimizada para Amazon ECS. Para obter mais informações, consulte [Criar um cluster do Amazon ECS para workloads do Fargate](create-cluster-console-v2.md).

Para obter informações sobre como instalar o agente do Amazon ECS no Windows Server 2022 Full, consulte o [problema 3753](https://github.com/aws/amazon-ecs-agent/issues/3753) no GitHub.

É possível usar esse script para suas próprias instâncias de contêiner (desde que elas sejam executadas com uma versão da AMI **Windows\$1Server-2016-English-Full-Contêineres**). Não se esqueça de substituir a linha `windows` para especificar o nome de seu próprio cluster (caso não esteja usando um cluster chamado `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>
```