

# Rol de IAM de CodeDeploy de Amazon ECS
<a name="codedeploy_IAM_role"></a>

Para poder utilizar el tipo de implementación azul/verde de CodeDeploy con Amazon ECS, el servicio de CodeDeploy necesita permisos para actualizar el servicio de Amazon ECS en su nombre. Estos permisos los proporciona el rol de IAM de CodeDeploy (`ecsCodeDeployRole`).

**nota**  
Los usuarios también necesitan permisos para utilizar CodeDeploy; estos permisos se describen en [Permisos de IAM necesarios](deployment-type-bluegreen.md#deployment-type-bluegreen-IAM). 

Se proporcionan dos políticas administradas. Para obtener más información, consulte lo siguiente en la *Guía de referencia de políticas administradas de AWS*:
+  [AWSCodeDeployRoleForECS](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeDeployRoleForECS.html): concede a CodeDeploy permiso para actualizar cualquier recurso mediante la acción asociada. 
+ [AWSCodeDeployRoleForECSLimited](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeDeployRoleForECSLimited.html): concede a CodeDeploy más permisos limitados. 

## Creación del rol de CodeDeploy
<a name="cd-iam-role-create"></a>

Puede utilizar los siguientes procedimientos para crear un rol de CodeDeploy para Amazon ECS.

------
#### [ Consola de administración de AWS ]

**Creación del rol de servicio para CodeDeploy (consola de IAM)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, seleccione **Roles** y, a continuación, elija **Crear rol**.

1. En **Tipo de entidad de confianza**, elija **Servicio de AWS**.

1. En **Servicio o caso de uso**, seleccione **CodeDeploy** y, a continuación, seleccione el caso de uso **CodeDeploy: ECS**.

1. Elija **Siguiente**.

1. En la sección **Asociar la política de permisos**, asegúrese de que esté seleccionada la política **AWSCodeDeployRoleForECS**.

1. Elija **Siguiente**.

1.  En **Nombre del rol**, ingrese **ecsCodeDeployRole**.

1. Revise el rol y, a continuación, elija **Crear rol**.

------
#### [ AWS CLI ]

Sustituya cada *entrada del usuario* por información propia.

1. Cree un archivo con el nombre `codedeploy-trust-policy.json`, que contenga la política de confianza que se va a utilizar para el rol de IAM de CodeDeploy.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": ["codedeploy.amazonaws.com"]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Cree un rol de IAM con el nombre `ecsCodedeployRole`, que utilice la política de confianza creada en el paso anterior.

   ```
   aws iam create-role \
         --role-name ecsCodedeployRole \
         --assume-role-policy-document file://codedeploy-trust-policy.json
   ```

1. Adjunte la política administrada `AWSCodeDeployRoleForECS` o `AWSCodeDeployRoleForECSLimited` al rol `ecsTaskRole`.

   ```
   aws iam attach-role-policy \
         --role-name ecsCodedeployRole \
         --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS
   ```

   ```
   aws iam attach-role-policy \
         --role-name ecsCodedeployRole \
         --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECSLimited
   ```

------

Cuando las tareas del servicio necesitan un rol de ejecución de tarea, debe agregar el permiso `iam:PassRole` correspondiente a cada rol de ejecución de tarea o anulación de rol de tarea al rol CodeDeploy como política. 

### Permisos de rol de ejecución de tareas
<a name="cd-iam-role-attach-policy"></a>

Cuando las tareas del servicio necesitan un rol de ejecución de tareas, debe agregar el permiso `iam:PassRole` correspondiente a cada rol de puesta en marcha de tarea o anulación de rol de tarea al rol CodeDeploy como política. Para obtener más información, consulte [Rol de IAM de ejecución de tareas de Amazon ECS](task_execution_IAM_role.md) y [Rol de IAM de tarea de Amazon ECS](task-iam-roles.md). A continuación, asocie esa política al rol CodeDeploy.

Creación de la política

------
#### [ Consola de administración de AWS ]

**Utilización del editor de política de JSON para la creación de una política**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la izquierda, elija **Políticas**. 

   Si es la primera vez que elige **Políticas**, aparecerá la página **Welcome to Managed Policies** (Bienvenido a políticas administradas). Elija **Comenzar**.

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

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

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

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
           }
       ]
   }
   ```

1. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) en la *Guía del usuario de IAM*.

1. 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.

1. Elija **Crear política** para guardar la nueva política.

Después de crear la política, adjunte la política al rol de CodeDeploy. Para obtener información acerca de cómo asociar la política al rol, consulte [Actualización de los permisos de un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html) en la *Guía del usuario de AWS Identity and Access Management*.

------
#### [ AWS CLI ]

Sustituya cada *entrada del usuario* por información propia.

1. Cree un archivo denominado `blue-green-iam-passrole.json` con el siguiente contenido.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": ["arn:aws:iam::*:role/code-deploy-role"],
               "Condition": {
                       "StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"}
               }
           }
       ]
   }
   ```

------

1. Utilice el siguiente comando para crear la política de IAM con el archivo de documento de política de JSON.

   ```
   aws iam create-policy \
         --policy-name cdTaskExecutionPolicy \
         --policy-document file://blue-green-iam-passrole.json
   ```

1. Recupere el ARN de la política de IAM que creó mediante el siguiente comando.

   ```
   aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cdTaskExecutionPolicy`].Arn'
   ```

1. Utilice el siguiente comando para adjuntar la política al rol de IAM de CodeDeploy.

   ```
   aws iam attach-role-policy \
         --role-name ecsCodedeployRole \
         --policy-arn arn:aws:iam:111122223333:aws:policy/cdTaskExecutionPolicy
   ```

------