

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

# CodeBuild Permitir interagir com outros AWS serviços
<a name="setting-up-service-role"></a>

Se você seguir as etapas [Conceitos básicos que usam o console](getting-started-overview.md#getting-started) AWS CodeBuild para acessar pela primeira vez, provavelmente não precisará das informações deste tópico. No entanto, à medida que você continua usando CodeBuild, talvez queira fazer coisas como permitir CodeBuild a interação com outros AWS serviços.

Para permitir CodeBuild a interação com AWS serviços dependentes em seu nome, você precisa de uma função AWS CodeBuild de serviço. Você pode criar uma função CodeBuild de serviço usando os AWS CodePipeline consoles CodeBuild ou. Para obter mais informações, consulte:
+ [Criar um projeto de compilação (console)](create-project.md#create-project-console)
+ [Crie um pipeline que use CodeBuild (CodePipeline console)](how-to-create-pipeline-console.md)
+ [Adicionar uma ação de CodeBuild criação a um pipeline (CodePipeline console)](how-to-create-pipeline-add.md)
+ [Alterar configurações de um projeto de compilação (console)](change-project.md#change-project-console)

Se você não planeja usar esses consoles, esta seção descreve como criar uma função de CodeBuild serviço com o console do IAM ou o. AWS CLI

**Importante**  
CodeBuild usa a função de serviço para todas as operações que são realizadas em seu nome. Se o perfil inclui permissões que o usuário não precisa, você pode ampliar involuntariamente as permissões de um usuário. Certifique-se de que o perfil conceda o [privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).  
A função de serviço descrita nesta página contém uma política que concede as permissões mínimas necessárias para usar o CodeBuild. Talvez seja necessário adicionar permissões, dependendo do caso de uso.<a name="setting-up-service-role-console"></a>

**Para criar uma função CodeBuild de serviço (console)**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   Você já deverá estar conectado no console de uma das seguintes maneiras:
   + Sua conta AWS root. Isso não é recomendado. Para obter mais informações, consulte [The Conta da AWS root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) no *Guia do usuário*.
   + Um usuário administrador em sua AWS conta. Para obter mais informações, consulte [Criando seu primeiro usuário e grupo Conta da AWS raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) no *Guia do usuário*.
   + Um usuário em sua AWS conta com permissão para realizar o seguinte conjunto mínimo de ações:

     ```
     iam:AddRoleToInstanceProfile
     iam:AttachRolePolicy
     iam:CreateInstanceProfile
     iam:CreatePolicy
     iam:CreateRole
     iam:GetRole
     iam:ListAttachedRolePolicies
     iam:ListPolicies
     iam:ListRoles
     iam:PassRole
     iam:PutRolePolicy
     iam:UpdateAssumeRolePolicy
     ```

     Para obter mais informações, consulte [Overview of IAM Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) no *Guia do usuário*.

1. No painel de navegação, selecione **Políticas**.

1. Escolha **Create Policy**.

1. Na página **Create Policy**, escolha **JSON**.

1. Na política JSON, insira o seguinte e escolha **Review Policy (Revisar política)**:

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CloudWatchLogsPolicy",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents"
         ],
         "Resource": "*"
       },
       {
         "Sid": "CodeCommitPolicy",
         "Effect": "Allow",
         "Action": [
           "codecommit:GitPull"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3GetObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3PutObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject"
         ],
         "Resource": "*"
       },
       {
         "Sid": "ECRPullPolicy",
         "Effect": "Allow",
         "Action": [
           "ecr:BatchCheckLayerAvailability",
           "ecr:GetDownloadUrlForLayer",
           "ecr:BatchGetImage"
         ],
         "Resource": "*"
       },
       {
         "Sid": "ECRAuthPolicy",
         "Effect": "Allow",
         "Action": [
           "ecr:GetAuthorizationToken"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3BucketIdentity",
         "Effect": "Allow",
         "Action": [
           "s3:GetBucketAcl",
           "s3:GetBucketLocation"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------
**nota**  
Essa política contém declarações que permitem o acesso a um número potencialmente grande de AWS recursos. AWS CodeBuild Para restringir o acesso a AWS recursos específicos, altere o valor da `Resource` matriz. Para obter mais informações, consulte a documentação de segurança do AWS serviço.

1. Na página **Review Policy (Revisar política)**, em **Policy Name (Nome da política)**, insira um nome para a política (por exemplo, **CodeBuildServiceRolePolicy**) e escolha **Create policy (Criar política)**.
**nota**  
Se você usar um nome diferente, certifique-se de usá-lo durante todo este procedimento.

1. No painel de navegação, escolha **Perfis**.

1. Escolha **Criar Perfil**.

1. Na página **Criar função**, com o **AWS Serviço** já selecionado, escolha e, em seguida **CodeBuild**, escolha **Avançar:Permissões**.

1. Na página **Anexar políticas de permissões**, selecione e **CodeBuildServiceRolePolicy**, em seguida, escolha **Avançar: Revisão**.

1. Na página **Create role and review (Criar função e revisão)**, em **Role name (Nome da função)**, insira um nome para a função (por exemplo, **CodeBuildServiceRole**) e escolha **Create role (Criar função)**.<a name="setting-up-service-role-cli"></a>

**Para criar uma função CodeBuild de serviço (AWS CLI)**

1. Certifique-se de ter configurado o AWS CLI com a chave de AWS acesso e a chave de acesso AWS secreta que correspondem a uma das entidades do IAM, conforme descrito no procedimento anterior. Para obter mais informações, consulte [Noções básicas de configuração do AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) no *Guia do usuário do AWS Command Line Interface *.

1. Em um diretório vazio na estação de trabalho local ou na instância em que o AWS CLI está instalado, crie dois arquivos chamados `create-role.json` e. `put-role-policy.json` Se você escolher nomes de arquivo diferentes, certifique-se de usá-los durante este procedimento.

   `create-role.json`:

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

****  

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

------
**nota**  
Recomendamos o uso das chaves de condição `aws:SourceAccount` e `aws:SourceArn` para se proteger contra o [problema confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Por exemplo, é possível editar a política de confiança anterior com os blocos de condição a seguir. `aws:SourceAccount`É o proprietário do CodeBuild projeto e o `aws:SourceArn` ARN do CodeBuild projeto.

   Se você quiser restringir sua função de serviço a uma AWS conta, `create-role.json` pode ter uma aparência semelhante a esta:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "codebuild.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": [
                           "111122223333"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

   Se você quiser restringir sua função de serviço a um CodeBuild projeto específico, `create-role.json` pode ter uma aparência semelhante a esta:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "codebuild.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject"
                   }
               }
           }
       ]
   }
   ```

------
**nota**  
Se você não sabe ou não escolheu um nome para seu CodeBuild projeto e quer uma restrição de política de confiança em um determinado padrão de ARN, você pode substituir essa parte do ARN por um caractere curinga (\$1). Depois de criar o projeto, você poderá atualizar a política de confiança.

   `put-role-policy.json`:

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CloudWatchLogsPolicy",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents"
         ],
         "Resource": "*"
       },
       {
         "Sid": "CodeCommitPolicy",
         "Effect": "Allow",
         "Action": [
           "codecommit:GitPull"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3GetObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3PutObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3BucketIdentity",
         "Effect": "Allow",
         "Action": [
           "s3:GetBucketAcl",
           "s3:GetBucketLocation"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------
**nota**  
Essa política contém declarações que permitem o acesso a um número potencialmente grande de AWS recursos. AWS CodeBuild Para restringir o acesso a AWS recursos específicos, altere o valor da `Resource` matriz. Para obter mais informações, consulte a documentação de segurança do AWS serviço.

1. Navegue até o diretório onde você salvou os arquivos anteriores, e execute os dois comandos seguintes, um por vez, nessa ordem. Você pode usar valores diferentes para `CodeBuildServiceRole` e `CodeBuildServiceRolePolicy`, mas não se esqueça de usá-los aqui.

   ```
   aws iam create-role --role-name CodeBuildServiceRole --assume-role-policy-document file://create-role.json
   ```

   ```
   aws iam put-role-policy --role-name CodeBuildServiceRole --policy-name CodeBuildServiceRolePolicy --policy-document file://put-role-policy.json
   ```