Configuração adicional para funções do IAM do Windows para tarefas - Amazon Elastic Container Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configuração adicional para funções do IAM do Windows para tarefas

Importante

Não é necessário realizar nenhuma ação adicional para contêineres do Windows no Fargate que usem perfis de tarefa. Para contêineres do Windows no EC2 que usem perfil de tarefa, siga estas etapas.

Os perfis do IAM para tarefas com recursos do Windows exigem uma configuração adicional no EC2, mas boa parte dessa configuração é semelhante à configuração de perfis do IAM para tarefas em instâncias de contêiner do Linux. Os requisitos a seguir devem ser atendidos para configurar funções do IAM para tarefas de contêineres do Windows.

  • Ao iniciar as instâncias de contêiner, você deve definir a opção -EnableTaskIAMRole no script de dados de usuário das instâncias de contêiner. O EnableTaskIAMRole ativa o recurso de funções de tarefas do IAM para as tarefas. Por exemplo:

    <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole </powershell>
  • Você deve executar bootstrap no contêiner com os comandos de rede fornecidos em Funções do IAM para o script de bootstrap do contêiner de tarefas.

  • Você deve criar uma função e uma política do IAM para as tarefas. Para ter mais informações, consulte Criação de uma função e política do IAM para suas tarefas.

  • Você deve especificar a função do IAM que foi criada para as tarefas quando registrar a definição de tarefa, ou como uma substituição quando executar a tarefa. Para ter mais informações, consulte Especificação de uma função do IAM para suas tarefas.

  • As funções do IAM do provedor de credencial da tarefa usam a porta 80 da instância de contêiner. Portanto, se você configurar funções do IAM para tarefas na instância de contêiner, os contêineres não poderão usar a porta 80 como porta do host em qualquer mapeamento de porta. Para expor os contêineres na porta 80, recomendamos configurar um serviço para eles que use o balanceamento de carga. É possível usar a porta 80 no balanceador de carga. Ao fazer isso, o tráfego pode ser roteado para outra porta do host nas instâncias de contêiner. Para ter mais informações, consulte Distribua o tráfego do serviço Amazon ECS usando balanceamento de carga.

  • Se a instância do Windows for reiniciada, você deverá excluir a interface proxy e reinicializar o agente de contêiner do Amazon ECS para trazer de volta o proxy de credenciais.

Funções do IAM para o script de bootstrap do contêiner de tarefas

Para os contêineres acessarem o proxy de credencial na instância de contêiner para obter credenciais, o contêiner deve receber bootstrap com os comandos de rede obrigatórios. O script de exemplo de código a seguir deve ser executado nos contêineres quando eles iniciam.

nota

Não é necessário executar esse script quando é usado o modo de rede awsvpc no Windows.

Se você executar contêineres do Windows que incluem o Powershell, use o seguinte script:

# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may # not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is distributed # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either # express or implied. See the License for the specific language governing # permissions and limitations under the License. $gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq '0.0.0.0/0' } | Sort-Object RouteMetric | Select NextHop).NextHop $ifIndex = (Get-NetAdapter -InterfaceDescription "Hyper-V Virtual Ethernet*" | Sort-Object | Select ifIndex).ifIndex New-NetRoute -DestinationPrefix 169.254.170.2/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # credentials API New-NetRoute -DestinationPrefix 169.254.169.254/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # metadata API

Se você executar contêineres do Windows que tenham apenas o shell de comandos, use o seguinte script:

# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may # not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is distributed # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either # express or implied. See the License for the specific language governing # permissions and limitations under the License. for /f "tokens=1" %i in ('netsh interface ipv4 show interfaces ^| findstr /x /r ".*vEthernet.*"') do set interface=%i for /f "tokens=3" %i in ('netsh interface ipv4 show addresses %interface% ^| findstr /x /r ".*Default.Gateway.*"') do set gateway=%i netsh interface ipv4 add route prefix=169.254.170.2/32 interface="%interface%" nexthop="%gateway%" store=active # credentials API netsh interface ipv4 add route prefix=169.254.169.254/32 interface="%interface%" nexthop="%gateway%" store=active # metadata API