Rol de IAM de instancia de contenedor de Amazon ECS - 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.

Rol de IAM de instancia de contenedor de Amazon ECS

Las instancias de contenedor de Amazon ECS, incluidas las instancias de Amazon EC2 y las externas, ejecutan el agente de contenedor de Amazon ECS y requieren un rol de IAM para que el servicio sepa que el agente le pertenece. Antes de lanzar instancias de contenedor y registrarlas en un clúster, debe crear un rol de IAM para que lo utilicen las instancias de contenedor. El rol se crea en la cuenta que se utiliza para iniciar sesión en la consola o ejecutar los AWS CLI comandos.

importante

Si está registrando instancias externas en el clúster, el rol de IAM que utiliza también requiere permisos de Systems Manager. Para obtener más información, consulte Rol de IAM de ECS Anywhere.

Amazon ECS proporciona la política de IAM administrada AmazonEC2ContainerServiceforEC2Role, que contiene los permisos necesarios para utilizar el conjunto completo de características de Amazon ECS. Esta política administrada se puede asociar a un rol de IAM y a las instancias de contenedor. También puede utilizar la política administrada como guía cuando crea la política personalizada que va a utilizar. El rol de instancia de contenedor proporciona los permisos necesarios para que el agente contenedor de Amazon ECS y el daemon de Docker llamen a AWS las API en su nombre. Para obtener más información acerca de la política administrada, consulte Función EC2 de Amazon EC2 ContainerServicefor.

Amazon ECS es compatible con el lanzamiento de instancias de contenedor con mayor densidad de ENI al usar tipos de instancias de Amazon EC2 compatibles. Cuando utilice esta función, le recomendamos que cree 2 roles de instancia de contenedor. Habilite la configuración de la awsvpcTrunking cuenta para un rol y utilícelo para las tareas que requieran la conexión troncal de ENI. Para obtener información sobre la configuración de la awsvpcTrunking cuenta, consulteAcceso a las funciones de Amazon ECS a través de la configuración de la cuenta.

Creación del rol de instancia de contenedor (ecsInstanceRole)

importante

Si está registrando instancias externas en el clúster, consulte Rol de IAM de ECS Anywhere.

Puede crear el rol manualmente y asociarlo a la política de IAM administrada para instancias de contenedor a fin de permitir que Amazon ECS agregue permisos para futuras características y mejoras a medida que se vayan introduciendo. Utilice el siguiente procedimiento para adjuntar la política de IAM gestionada si es necesario.

AWS Management Console
Para crear el rol de IAM ecsInstanceRole para las instancias de contenedor
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Roles y luego seleccione Crear rol.

  3. Elija el tipo AWS de función de servicio y, a continuación, en Casos de uso para otros AWS servicios, elija Elastic Container Service.

  4. Elija el caso de uso EC2 Role for Elastic Container Service (Rol de EC2 para un servicio de contenedor elástico) y, a continuación, elija Next: Permissions (Siguiente: permisos).

  5. En la sección Políticas de permisos, compruebe que la política ContainerServiceforEC2Role de AmazonEC2 esté seleccionada y, a continuación, seleccione Siguiente.

    importante

    La política gestionada por ContainerServiceforEC2Role de AmazonEC2 debe estar asociada a la función de IAM de la instancia del contenedor; de lo contrario, recibirá un error al utilizar la función para crear clústeres. AWS Management Console

  6. En el campo Nombre del rol, introduzca ecsInstanceRoley, si lo desea, puede introducir una descripción.

  7. En Agregar etiquetas (opcional), ingrese las etiquetas personalizadas que desee asociar a la política y, a continuación, elija Siguiente: revisar.

  8. Revise la información del rol y, luego, seleccione Create role para terminar.

AWS CLI

Sustituya todas las entradas del usuario por sus propios valores.

  1. Cree un archivo denominado instance-role-trust-policy.json con el siguiente contenido.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. Usa el siguiente comando para crear el rol de IAM de la instancia mediante el documento de política de confianza.

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://instance-role-trust-policy.json
  3. Cree un perfil de instancia denominado ecsInstanceRole-profile mediante el create-instance-profilecomando.

    aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile

    Ejemplo de respuesta

    { "InstanceProfile": { "InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE", "Roles": [], "CreateDate": "2022-04-12T23:53:34.093Z", "InstanceProfileName": "ecsInstanceRole-profile", "Path": "/", "Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile" } }
  4. Añada el rol ecsInstanceRole al perfil de instancia ecsInstanceRole-profile.

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole
  5. Adjunta la política AmazonEC2ContainerServiceRoleForEC2Role administrada al rol mediante el siguiente comando.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \ --role-name ecsInstanceRole

Adición del acceso de solo lectura de Amazon S3 al rol de instancia de contenedor (ecsInstanceRole)

El almacenamiento de la información de configuración en un bucket privado en Amazon S3 y la concesión de acceso de solo lectura al rol de IAM de instancia de contenedor es una forma práctica y segura de permitir la configuración de instancia de contenedor en el momento del lanzamiento. Puede almacenar una copia del ecs.config archivo en un depósito privado, utilizar los datos de usuario de Amazon EC2 para instalar AWS CLI y, a continuación, copiar la información de configuración /etc/ecs/ecs.config cuando se lance la instancia.

Para obtener más información acerca de cómo crear un archivo ecs.config, almacenarlo en Amazon S3 y lanzar instancias con esta configuración, consulte Almacenamiento de la configuración de instancia de contenedor en Amazon S3.

Puede usar el siguiente AWS CLI comando para permitir el acceso de solo lectura a Amazon S3 para su rol de instancia de contenedor. ecsInstanceRoleSustitúyalo por el nombre del rol que creaste.

aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws::iam::aws:policy/AmazonS3ReadOnlyAccess

También puede utilizar la consola de IAM para añadir el acceso de solo lectura (AmazonS3ReadOnlyAccess) de Amazon S3 a su función. Para obtener más información, consulte Modificación de la política de permisos de un rol (consola) en la Guía del AWS Identity and Access Management usuario.

Permisos necesarios para monitorear las instancias de contenedor

Antes de que sus instancias de contenedor puedan enviar datos de registro a CloudWatch Logs, debe crear una política de IAM que permita que sus instancias de contenedor utilicen las API de CloudWatch Logs y, a continuación, debe adjuntar esa política aecsInstanceRole.

AWS Management Console
Para utilizar el editor de política de JSON para crear una política
  1. Inicie sesión en la consola de IAM AWS Management Console y ábrala en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación de la izquierda, seleccione Políticas.

    Si es la primera vez que elige Políticas, aparecerá la página Bienvenido a políticas administradas. Elija Comenzar.

  3. En la parte superior de la página, seleccione Crear política.

  4. En la sección Editor de políticas, seleccione la opción JSON.

  5. Ingrese el siguiente documento de política JSON:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  6. Elija Siguiente.

    nota

    Puede alternar entre las opciones Visual y JSON del editor en todo momento. No obstante, si realiza cambios o selecciona Siguiente en la opción Visual del editor, es posible que IAM reestructure la política, con el fin de optimizarla para el editor visual. Para obtener más información, consulte Reestructuración de política en la Guía del usuario de IAM.

  7. En la página Revisar y crear, introduzca el Nombre de la política y la Descripción (opcional) para la política que está creando. Revise los Permisos definidos en esta política para ver los permisos que concede la política.

  8. Elija Create Policy (Crear política) para guardar la nueva política.

Tras crear la política, asocie la política a la función de instancia contenedora. Para obtener información sobre cómo asociar la política al rol, consulte Modificación de la política de permisos de un rol (consola) en la Guía del AWS Identity and Access Management usuario.

AWS CLI
  1. Cree un archivo denominado instance-cw-logs.json con el siguiente contenido.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  2. Utilice el siguiente comando para crear la política de IAM mediante el archivo de documento de política JSON.

    aws iam create-policy \ --policy-name cwlogspolicy \ --policy-document file://instance-cw-logs.json
  3. Recupere el ARN de la política de IAM que creó mediante el siguiente comando. Sustituya cwlogspolicy por el nombre de la política que creó.

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogsppolicy`].Arn'
  4. Utilice el siguiente comando para adjuntar la política a la función de IAM de la instancia del contenedor mediante el ARN de la política.

    aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy