

# Função do IAM para CodeDeploy do Amazon ECS
<a name="codedeploy_IAM_role"></a>

Antes de poder usar o tipo de implantação azul/verde do CodeDeploy com o Amazon ECS, o serviço do CodeDeploy precisa de permissões para atualizar o serviço do Amazon ECS em seu nome. Essas permissões são fornecidas pela função do IAM para CodeDeploy (`ecsCodeDeployRole`).

**nota**  
Os usuários também precisam de permissões para usar o CodeDeploy; essas permissões são descritas em [Permissões obrigatórias do IAM](deployment-type-bluegreen.md#deployment-type-bluegreen-IAM). 

Existem duas políticas gerenciadas fornecidas. Para obter mais informações, consulte um dos tópicos a seguir no *AWS Managed Policy Reference Guide*:
+  [AWSCodeDeployRoleForECS](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeDeployRoleForECS.html): concede ao CodeDeploy permissão para atualizar qualquer recurso usando a ação associada. 
+ [AWSCodeDeployRoleForECSLimited](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeDeployRoleForECSLimited.html): concede ao CodeDeploy permissões mais limitadas. 

## Criação do perfil do CodeDeploy
<a name="cd-iam-role-create"></a>

Use os procedimentos a seguir para criar um perfil do CodeDeDeploy para o Amazon ECS

------
#### [ Console de gerenciamento da AWS ]

**Para criar o perfil de serviço do CodeDeploy (console do IAM)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis** e, em seguida, **Criar perfil**.

1. Em **Tipo de entidade confiável**, escolha **AWS service (Serviço da AWS)**.

1. Em **Serviço ou caso de uso**, escolha **CodeDeploy** e selecione o caso de uso **CodeDeploy: ECS**.

1. Escolha **Próximo**.

1. Na seção **Anexar política de permissões**, certifique-se de que a política **AWSCodeDeployRoleForECS** esteja selecionada.

1. Escolha **Próximo**.

1.  Em **Nome do perfil**, insira **ecsCodeDeployRole**.

1. Reveja a função e escolha **Criar função**.

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

Substitua cada *entrada do usuário* por suas próprias informações.

1. Crie um arquivo denominado `codedeploy-trust-policy.json` que contenha a política de confiança a ser usada no perfil do IAM para CodeDeploy.

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

****  

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

------

1. Crie uma função do IAM denominada `ecsCodedeployRole` usando a política de confiança criada na etapa anterior.

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

1. Anexe a política gerenciada `AWSCodeDeployRoleForECS` ou `AWSCodeDeployRoleForECSLimited` ao perfil `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
   ```

------

Quando as tarefas do serviço precisam de um perfil de execução de tarefa, você deve adicionar a permissão `iam:PassRole` para cada perfil de execução de tarefa ou de substituição de perfil de tarefa ao perfil do CodeDeploy como uma política. 

### Permissões do perfil de execução de tarefa
<a name="cd-iam-role-attach-policy"></a>

Quando as tarefas do serviço precisam de um perfil de execução de tarefa, você deve adicionar a permissão `iam:PassRole` para cada perfil de execução de tarefa ou de substituição de perfil de tarefa ao perfil do CodeDeploy como uma política. Para obter mais informações, consulte [Função do IAM de execução de tarefas do Amazon ECS](task_execution_IAM_role.md) e [Perfil do IAM para tarefas do Amazon ECS](task-iam-roles.md). Depois, você anexa essa política ao perfil do CodeDeploy

Crie a política do

------
#### [ Console de gerenciamento da AWS ]

**Para usar o editor de políticas JSON para criar uma política**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Políticas**. 

   Se essa for a primeira vez que você escolhe **Políticas**, a página **Bem-vindo às políticas gerenciadas** será exibida. Escolha **Começar**.

1. Na parte superior da página, escolha **Criar política**.

1. Na seção **Editor de políticas**, escolha a opção **JSON**.

1. Insira o seguinte 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. Escolha **Próximo**.
**nota**  
É possível alternar entre as opções de editor **Visual** e **JSON** a qualquer momento. Porém, se você fizer alterações ou escolher **Próximo** no editor **Visual**, o IAM poderá reestruturar a política a fim de otimizá-la para o editor visual. Para obter mais informações, consulte [Restruturação de política](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) no *Guia do usuário do IAM*.

1. Na página **Revisar e criar**, insira um **Nome de política** e uma **Descrição** (opcional) para a política que você está criando. Revise **Permissões definidas nessa política** para ver as permissões que são concedidas pela política.

1. Escolha **Criar política** para salvar sua nova política.

Após criar a política, anexe-a ao perfil do CodeDeploy. Para obter informações sobre como anexar uma política a um perfil, consulte [Atualizar permissões para um perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html) no *Guia do usuário do AWS Identity and Access Management*.

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

Substitua cada *entrada do usuário* por suas próprias informações.

1. Crie um arquivo denominado `blue-green-iam-passrole.json` com o seguinte conteúdo.

------
#### [ 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. Use o comando da a seguir para criar a política do IAM usando o arquivo de documento da política JSON.

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

1. Recupere o ARN da política do IAM que você criou usando o comando a seguir.

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

1. Use o comando a seguir para anexar a política ao perfil do IAM para CodeDeploy.

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

------