Configuración adicional para los roles de IAM para las tareas de Windows - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración adicional para los roles de IAM para las tareas de Windows

importante

En el caso de los contenedores de Windows en Fargate que utilizan roles de tareas, no es necesario realizar ninguna otra acción. Para los contenedores de Windows en EC2 que utilizan roles de tareas, siga estos pasos.

Los roles de IAM para las tareas con características de Windows requieren una configuración adicional en EC2, pero gran parte de esta configuración es similar a la de los roles de IAM para las tareas en instancias de contenedor de Linux. A fin de configurar los roles de IAM para las tareas de contenedores de Windows se deben cumplir los siguientes requisitos.

  • Cuando se lanzan las instancias de contenedor, se debe establecer la opción -EnableTaskIAMRole en el script de datos de usuario de las instancias de contenedor. El rol EnableTaskIAMRole activa la característica de roles de IAM de tareas para las tareas. Por ejemplo:

    <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole </powershell>
  • Debe arrancar el contenedor con los comandos de redes que se proporcionan en Roles de IAM para el script del proceso de arranque de contenedores de tareas.

  • Debe crear un rol y una política de IAM para las tareas. Para obtener más información, consulte Creación de un rol y una política de IAM para las tareas.

  • Debe especificar el rol de IAM que creó para las tareas al registrar la definición de tareas o como anulación al ejecutar la tarea. Para obtener más información, consulte Especificación de un rol de IAM para las tareas.

  • Los roles de IAM para el proveedor de credenciales de tareas utilizan el puerto 80 en la instancia de contenedor. Por lo tanto, si configura roles de IAM para las tareas en la instancia de contenedor, los contenedores no pueden utilizar el puerto 80 como puerto del host en ningún mapeo de puertos. Para exponer los contenedores en el puerto 80, recomendamos configurar un servicio para ellos que utilice el balanceo de carga. Puede utilizar el puerto 80 en el balanceador de carga. De este modo, el tráfico se puede dirigir a otro puerto del host en las instancias de contenedor. Para obtener más información, consulte Distribuya el tráfico del servicio Amazon ECS mediante el equilibrio de carga.

  • Si se reinicia la instancia de Windows, debe eliminar la interfaz de proxy y volver a inicializar el agente de contenedor de Amazon ECS para que se vuelva a activar el proxy de credenciales.

Roles de IAM para el script del proceso de arranque de contenedores de tareas

Antes de que los contenedores puedan obtener acceso al proxy de credenciales en la instancia de contenedor para obtener credenciales, el contenedor se debe arrancar con los comandos de redes requeridos. El siguiente script de ejemplo de código se debe ejecutar en los contenedores cuando se inician.

nota

No es necesario ejecutar este script cuando se utiliza el modo de red awsvpc en Windows.

Si ejecuta contenedores de Windows que incluyen Powershell, utilice el siguiente 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

Si ejecuta contenedores de Windows que solo tienen el shell de comandos, utilice el siguiente 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