

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.

# CodeBuild Permiten interactuar con otros servicios AWS
<a name="setting-up-service-role"></a>

Si sigue los pasos descritos [Primeros pasos con la consola](getting-started-overview.md#getting-started) AWS CodeBuild para acceder por primera vez, lo más probable es que no necesite la información de este tema. Sin embargo, a medida que vaya utilizándolos CodeBuild, es posible que desee hacer cosas como CodeBuild permitir la interacción con otros AWS servicios.

 CodeBuild Para poder interactuar con los AWS servicios dependientes en su nombre, necesita un rol AWS CodeBuild de servicio. Puede crear un rol CodeBuild de servicio mediante las AWS CodePipeline consolas CodeBuild o. Para obtener información, consulte:
+ [Creación de un proyecto de compilación (consola)](create-project.md#create-project-console)
+ [Cree una canalización que utilice CodeBuild (CodePipeline consola)](how-to-create-pipeline-console.md)
+ [Añadir una acción de CodeBuild compilación a una canalización (CodePipeline consola)](how-to-create-pipeline-add.md)
+ [Cambiar la configuración de un proyecto de compilación (consola)](change-project.md#change-project-console)

Si no tiene previsto utilizar estas consolas, en esta sección se describe cómo crear un rol de CodeBuild servicio con la consola de IAM o la AWS CLI. 

**importante**  
CodeBuild utiliza el rol de servicio para todas las operaciones que se realizan en su nombre. Si el rol incluye permisos que el usuario no debería tener, puede escalar involuntariamente los permisos de un usuario. Asegúrese de que el rol concede [privilegios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).  
El rol de servicio que se describe en esta página contiene una política que concede los permisos mínimos necesarios para utilizar CodeBuild. Es posible que tenga que añadir permisos adicionales en función del caso de uso.<a name="setting-up-service-role-console"></a>

**Para crear un rol CodeBuild de servicio (consola)**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   Debe haber iniciado sesión en la consola con alguna de las entidades siguientes:
   + Tu cuenta AWS raíz. No se recomienda. Para obtener más información, consulte [El usuario raíz de Cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) en la *Guía del usuario*.
   + Un usuario administrador de tu AWS cuenta. Para obtener más información, consulte [Creación de su primer grupo y usuario Cuenta de AWS root](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) en la *Guía del usuario*.
   + Un usuario de su AWS cuenta con permiso para realizar el siguiente conjunto mínimo de acciones:

     ```
     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 obtener más información, consulte [Información general sobre las políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) en la *Guía del usuario*.

1. En el panel de navegación, seleccione **Políticas**.

1. Seleccione **Crear política**.

1. En la página **Create Policy**, elija **JSON**.

1. En la política JSON, escriba lo siguiente y elija **Review Policy (Consultar 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**  
Esta política contiene declaraciones que permiten el acceso a una cantidad potencialmente grande de AWS recursos. Para restringir AWS CodeBuild el acceso a AWS recursos específicos, cambie el valor de la `Resource` matriz. Para obtener más información, consulte la documentación de seguridad del AWS servicio.

1. En la página **Review Policy (Consultar política)**, en **Policy Name (Nombre de la política)**, escriba un nombre para la política (por ejemplo, **CodeBuildServiceRolePolicy**) y elija **Create policy (Crear política)**.
**nota**  
Si elige otro nombre, no olvide utilizarlo durante todo este procedimiento.

1. Seleccione **Roles** en el panel de navegación.

1. Elija **Create role** (Crear rol).

1. En la página **Crear rol**, con el **AWS servicio** ya seleccionado, elija y, a continuación **CodeBuild**, elija **Next:Permissions**.

1. En la página **Adjuntar políticas de permisos**, seleccione y **CodeBuildServiceRolePolicy**, a continuación, elija **Siguiente: revisar**.

1. En la página **Create role and review (Crear función y revisar)**, en **Role name (Nombre del rol)**, escriba un nombre para el rol (por ejemplo, **CodeBuildServiceRole**) y elija **Create role (Crear rol)**.<a name="setting-up-service-role-cli"></a>

**Para crear un rol CodeBuild de servicio (AWS CLI)**

1. Asegúrese de haberlo configurado AWS CLI con la clave de AWS acceso y la clave de acceso AWS secreta que corresponden a una de las entidades de IAM, tal y como se describe en el procedimiento anterior. Para obtener más información, consulte [Configuración inicial de la AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) en la *Guía del usuario de AWS Command Line Interface *.

1. En un directorio vacío de la estación de trabajo o instancia local en la que AWS CLI está instalado, cree dos archivos denominados `create-role.json` y. `put-role-policy.json` Si elige nombres de archivo diferentes, no olvide utilizarlos durante todo este procedimiento.

   `create-role.json`:

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

****  

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

------
**nota**  
Le recomendamos que utilice las claves de condición `aws:SourceAccount` y `aws:SourceArn` para protegerse contra el [problema del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Por ejemplo, podría editar la política de confianza anterior con los bloques de condición siguientes. `aws:SourceAccount`Es el propietario del CodeBuild proyecto y `aws:SourceArn` es el ARN del CodeBuild proyecto.

   Si quieres restringir tu función de servicio a una AWS cuenta, `create-role.json` podría tener un aspecto similar al siguiente:

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

****  

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

------

   Si quieres restringir tu función de servicio a un CodeBuild proyecto específico, `create-role.json` podría tener un aspecto similar al siguiente:

------
#### [ 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**  
Si no conoce o no ha elegido un nombre para su CodeBuild proyecto y desea restringir la política de confianza a un patrón de ARN concreto, puede sustituir esa parte del ARN por un comodín (\$1). Después de crear el proyecto, puede actualizar la política de confianza.

   `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**  
Esta política contiene declaraciones que permiten el acceso a una cantidad potencialmente grande de recursos. AWS Para restringir AWS CodeBuild el acceso a AWS recursos específicos, cambie el valor de la `Resource` matriz. Para obtener más información, consulte la documentación de seguridad del AWS servicio.

1. Cambie al directorio donde guardó los archivos anteriores y, a continuación, ejecute los dos comandos siguientes, uno cada vez, en este orden. Puede utilizar valores diferentes para `CodeBuildServiceRole` y `CodeBuildServiceRolePolicy`, pero no olvide emplearlos aquí.

   ```
   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
   ```