

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.

# Empezar con CodeBuild
<a name="getting-started-overview"></a>

En los siguientes tutoriales, se utiliza AWS CodeBuild para crear una colección de archivos de entrada de código fuente de ejemplo en una versión desplegable del código fuente.

Ambos tutoriales tienen la misma entrada y los mismos resultados, pero uno usa la AWS CodeBuild consola y el otro usa la AWS CLI. 

**importante**  
No le recomendamos que utilice su cuenta AWS root para completar este tutorial.

**Topics**
+ [

## Cómo empezar a AWS CodeBuild usar la consola
](#getting-started)
+ [

## Cómo empezar a AWS CodeBuild usar el AWS CLI
](#getting-started-cli)

## Cómo empezar a AWS CodeBuild usar la consola
<a name="getting-started"></a>

En este tutorial, se utiliza AWS CodeBuild para crear una colección de archivos de entrada de código fuente de muestra (*crear artefactos de entrada* o *crear entrada*) en una versión desplegable del código fuente (*crear artefactos de salida o *compilar* salida*). En concreto, se indica que se debe CodeBuild utilizar Apache Maven, una herramienta de compilación común, para crear un conjunto de archivos de clases de Java en un archivo de Java Archive (JAR). No necesita estar familiarizado con Apache Maven o Java para completar este tutorial.

Puede trabajar con él CodeBuild a través de la CodeBuild consola AWS CodePipeline AWS CLI, el o el. AWS SDKs En este tutorial se muestra cómo utilizar la CodeBuild consola. Para obtener más información sobre del uso de CodePipeline, consulte [Úselo CodeBuild con CodePipeline](how-to-create-pipeline.md).

**importante**  
Los pasos de este tutorial requieren que cree recursos (por ejemplo, un bucket de S3) que podrían generar cargos en su AWS cuenta. Estos incluyen posibles cargos por CodeBuild y por AWS los recursos y acciones relacionados con Amazon S3 y CloudWatch Logs. AWS KMS Para obtener más información, consulte [AWS CodeBuild precios](https://aws.amazon.com/codebuild/pricing), [precios de Amazon S3](https://aws.amazon.com/s3/pricing), [AWS Key Management Service precios](https://aws.amazon.com/kms/pricing) y [ CloudWatch precios de Amazon](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [

### Paso 1: Crear el código fuente
](#getting-started-create-source-code-console)
+ [

### Paso 2: creación del archivo de especificación de compilación
](#getting-started-create-build-spec-console)
+ [

### Paso 3: creación de dos buckets de S3
](#getting-started-input-bucket-console)
+ [

### Paso 4: cargar el código fuente y el archivo buildspec
](#getting-started-upload-source-code-console)
+ [

### Paso 5: crear el proyecto de compilación
](#getting-started-create-build-project-console)
+ [

### Paso 6: ejecutar la compilación
](#getting-started-run-build-console)
+ [

### Paso 7: ver información resumida sobre la compilación
](#getting-started-monitor-build-console)
+ [

### Paso 8: ver información detallada sobre la compilación
](#getting-started-build-log-console)
+ [

### Paso 9: obtener el artefacto de salida de la compilación
](#getting-started-output-console)
+ [

### Paso 10: eliminar los buckets de S3
](#getting-started-clean-up-console)
+ [

### Encapsulación
](#getting-started-next-steps-console)

### Paso 1: Crear el código fuente
<a name="getting-started-create-source-code-console"></a>

(Parte de: [Cómo empezar a AWS CodeBuild usar la consola](#getting-started))

En este paso, crea el código fuente que CodeBuild desea incluir en el segmento de salida. Este código fuente se compone de dos archivos de clases Java y un archivo Apache Maven Object Model (POM).

1. En un directorio vacío del equipo o la instancia local, cree esta estructura de directorios.

   ```
   (root directory name)
       `-- src
            |-- main
            |     `-- java
            `-- test
                  `-- java
   ```

1. Con el editor de texto que desee, cree este archivo, asígnele el nombre `MessageUtil.java` y guárdelo en el directorio `src/main/java`.

   ```
   public class MessageUtil {
     private String message;
   
     public MessageUtil(String message) {
       this.message = message;
     }
   
     public String printMessage() {
       System.out.println(message);
       return message;
     }
   
     public String salutationMessage() {
       message = "Hi!" + message;
       System.out.println(message);
       return message;
     }
   }
   ```

   Este archivo de clases crea como resultado la cadena de caracteres que se la ha pasado. El constructor `MessageUtil` establece la cadena de caracteres. El método `printMessage` crea la salida. El método `salutationMessage` muestra `Hi!` seguido de la cadena de caracteres.

1. Cree este archivo, asígnele el nombre `TestMessageUtil.java` y guárdelo en el directorio `/src/test/java`.

   ```
   import org.junit.Test;
   import org.junit.Ignore;
   import static org.junit.Assert.assertEquals;
   
   public class TestMessageUtil {
   
     String message = "Robert";    
     MessageUtil messageUtil = new MessageUtil(message);
      
     @Test
     public void testPrintMessage() {      
       System.out.println("Inside testPrintMessage()");     
       assertEquals(message,messageUtil.printMessage());
     }
   
     @Test
     public void testSalutationMessage() {
       System.out.println("Inside testSalutationMessage()");
       message = "Hi!" + "Robert";
       assertEquals(message,messageUtil.salutationMessage());
     }
   }
   ```

   Este archivo de clases establece la variable `message` de la clase `MessageUtil` en `Robert`. A continuación, comprueba si la variable `message` se ha establecido correctamente comprobando si las cadenas `Robert` y `Hi!Robert` aparecen en la salida.

1. Cree este archivo, asígnele el nombre `pom.xml` y guárdelo en el directorio raíz (nivel superior).

   ```
   <project xmlns="http://maven.apache.org/POM/4.0.0" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.example</groupId>
     <artifactId>messageUtil</artifactId>
     <version>1.0</version>
     <packaging>jar</packaging>
     <name>Message Utility Java Sample App</name>
     <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.11</version>
         <scope>test</scope>
       </dependency>	
     </dependencies>
     <build>
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.8.0</version>
         </plugin>
       </plugins>
     </build>
   </project>
   ```

   Apache Maven utiliza las instrucciones de este archivo para convertir los archivos `MessageUtil.java` y `TestMessageUtil.java` en un archivo denominado `messageUtil-1.0.jar` y, a continuación, ejecuta las pruebas especificadas. 

En este punto, la estructura de directorios debería ser similar a la siguiente.

```
(root directory name)
    |-- pom.xml
    `-- src
         |-- main
         |     `-- java
         |           `-- MessageUtil.java
         `-- test
               `-- java
                     `-- TestMessageUtil.java
```

### Paso 2: creación del archivo de especificación de compilación
<a name="getting-started-create-build-spec-console"></a>

(Paso anterior: [Paso 1: Crear el código fuente](#getting-started-create-source-code-console))

En este paso, creará un archivo de especificación de compilación. Una *especificación de compilación* es un conjunto de comandos de compilación y configuraciones relacionadas, en formato YAML, que se CodeBuild utiliza para ejecutar una compilación. Sin una especificación de compilación, CodeBuild no se puede convertir correctamente la entrada de compilación en el resultado de la compilación ni localizar el artefacto de salida de la compilación en el entorno de compilación para cargarlo en el depósito de salida.

Cree este archivo, asígnele el nombre `buildspec.yml` y guárdelo en el directorio raíz (nivel superior).

```
version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11
  pre_build:
    commands:
      - echo Nothing to do in the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn install
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - target/messageUtil-1.0.jar
```

**importante**  
Como una declaración de especificación de compilación debe ser una declaración YAML válida, los espacios de la declaración son importantes. Si el número de espacios de la declaración de especificación de compilación no coincide con esta declaración, la compilación podría producir un error inmediatamente. Puede utilizar un validador de YAML para comprobar si la declaración de especificación de compilación es una declaración YAML válida. 

**nota**  
En lugar de incluir un archivo de especificación de compilación en el código fuente, puede declarar los comandos de la compilación por separado cuando cree un proyecto de compilación. Esto resulta útil si desea compilar el código fuente con diferentes comandos de compilación sin actualizar el código fuente del repositorio cada vez. Para obtener más información, consulte [Sintaxis de buildspec](build-spec-ref.md#build-spec-ref-syntax).

En esta declaración de especificación de compilación:
+ `version` representa la versión del estándar de especificación de compilación que se va a usar. Esta declaración de especificación de compilación usa la última versión, `0.2`.
+ `phases` representa las fases de compilación en las que puede indicar a CodeBuild que ejecute comandos. Estas fases de compilación se muestran aquí como `install`, `pre_build`, `build` y `post_build`. No puede cambiar los nombres de estas fases de compilación ni puede crear nombres de fases de compilación adicionales. 

  En este ejemplo, durante la `build` fase, CodeBuild ejecuta el `mvn install` comando. Este comando indica a Apache Maven que compile, pruebe y empaquete los archivos de clases Java compilados en un artefacto de salida de la compilación. En aras de una mayor exhaustividad, se incluyen algunos comandos `echo` en cada fase de compilación de este ejemplo. Cuando vea información de compilación detallada más adelante en este tutorial, la salida de estos comandos de `echo` puede ayudarlo a comprender mejor cómo CodeBuild ejecuta los comandos y en qué orden lo hace. (Aunque en este ejemplo se incluyen todas las fases de compilación, no es necesario que incluya una fase de compilación si no piensa ejecutar ningún comando durante esa fase). Para cada fase de compilación, CodeBuild ejecuta cada comando especificado, uno a la vez, en el orden indicado, de principio a fin. 
+ `artifacts`representa el conjunto de artefactos de salida de la compilación que se CodeBuild carga en el depósito de salida. `files`representa los archivos que se van a incluir en el resultado de la compilación. CodeBuild carga el único `messageUtil-1.0.jar` archivo que se encuentra en el directorio `target` relativo del entorno de compilación. El nombre del archivo `messageUtil-1.0.jar` y el nombre del directorio `target` se basan en la forma en que Apache Maven crea y almacena los artefactos de salida de la compilación para este ejemplo únicamente. En sus propias compilaciones, estos nombres de archivos y directorios son diferentes. 

Para obtener más información, consulte la [Referencia de la especificación de compilación](build-spec-ref.md).

En este punto, la estructura de directorios debería ser similar a la siguiente.

```
(root directory name)
    |-- pom.xml
    |-- buildspec.yml
    `-- src
         |-- main
         |     `-- java
         |           `-- MessageUtil.java
         `-- test
               `-- java
                     `-- TestMessageUtil.java
```

### Paso 3: creación de dos buckets de S3
<a name="getting-started-input-bucket-console"></a>

(Paso anterior: [Paso 2: creación del archivo de especificación de compilación](#getting-started-create-build-spec-console))

Aunque puede usar un solo bucket para este tutorial, dos buckets hacen que sea más fácil ver de dónde proviene la entrada de compilación y hacia dónde va la salida de compilación.
+ Uno de estos buckets (*bucket de entrada*) almacena la entrada de compilación. En este tutorial, el nombre de este depósito de entrada es`codebuild-region-ID-account-ID-input-bucket`, donde *region-ID* está la AWS región del depósito y *account-ID* el ID de su AWS cuenta.
+ El otro bucket (*bucket de salida*) almacena la salida de la compilación. En este tutorial, el nombre de este bucket de salida es `codebuild-region-ID-account-ID-output-bucket`.

Si elige nombres diferentes para estos buckets, asegúrese de usarlos en este tutorial.

Estos dos grupos deben estar en la misma AWS región que tus compilaciones. Por ejemplo, si ordenas CodeBuild ejecutar una compilación en la región EE.UU. Este (Ohio), estos grupos también deben estar en la región EE.UU. Este (Ohio).

Para obtener más información, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

**nota**  
Aunque CodeBuild también es compatible con las entradas de compilación almacenadas en CodeCommit los repositorios de Bitbucket y en los repositorios, en este tutorial no se muestra cómo utilizarlas. GitHub Para obtener más información, consulte [Planificación de una compilación](planning.md).

### Paso 4: cargar el código fuente y el archivo buildspec
<a name="getting-started-upload-source-code-console"></a>

(Paso anterior: [Paso 3: creación de dos buckets de S3](#getting-started-input-bucket-console))

En este paso, añadirá el código fuente y el archivo de especificación de compilación al bucket de entrada.

Con la utilidad zip del sistema operativo, cree un archivo llamado `MessageUtil.zip` que incluya `MessageUtil.java`, `TestMessageUtil.java`, `pom.xml` y `buildspec.yml`. 

La estructura de directorios del archivo `MessageUtil.zip` debe ser similar a la siguiente.

```
MessageUtil.zip
    |-- pom.xml
    |-- buildspec.yml
    `-- src
         |-- main
         |     `-- java
         |           `-- MessageUtil.java
         `-- test
               `-- java
                     `-- TestMessageUtil.java
```

**importante**  
No incluya el directorio `(root directory name)`, solo los directorios y archivos del directorio `(root directory name)`.

Cargue el archivo `MessageUtil.zip` identificado en el bucket de entrada denominado `codebuild-region-ID-account-ID-input-bucket`. 

**importante**  
 CodeCommitEn GitHub el caso de los repositorios y de Bitbucket, por convención, debes almacenar un archivo de especificaciones de compilación denominado `buildspec.yml` en la raíz (nivel superior) de cada repositorio o incluir la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación. No cree un archivo ZIP que contenga el código fuente del repositorio y el archivo de especificación de compilación.   
Solo para entradas de compilación almacenadas en buckets de S3, debe crear un archivo ZIP que contenga el código fuente y convencionalmente, un archivo de especificación de compilación denominado `buildspec.yml` en la raíz (nivel superior) o incluya la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación.  
Si desea utilizar otro nombre para el archivo de especificación de compilación, o si quiere hacer referencia a una especificación de compilación en una ubicación distinta de la raíz, puede especificar una invalidación de la especificación de compilación como parte de la definición del proyecto de compilación. Para obtener más información, consulte [Nombre de archivo y ubicación de almacenamiento de buildspec](build-spec-ref.md#build-spec-ref-name-storage).

### Paso 5: crear el proyecto de compilación
<a name="getting-started-create-build-project-console"></a>

(Paso anterior: [Paso 4: cargar el código fuente y el archivo buildspec](#getting-started-upload-source-code-console))

En este paso, crearás un proyecto de compilación que se AWS CodeBuild utilizará para ejecutar la compilación. Un *proyecto de compilación* incluye información sobre cómo ejecutar una compilación, incluido dónde obtener el código fuente, qué entorno de compilación se debe usar, qué comandos de compilación se deben ejecutar y dónde se debe almacenar el resultado de la compilación. Un *entorno de compilación* representa una combinación del sistema operativo, el tiempo de ejecución del lenguaje de programación y las herramientas que se CodeBuild utilizan para ejecutar una compilación. El entorno de compilación se expresa como una imagen de Docker. Para obtener más información, consulte [Descripción general de Docker](https://docs.docker.com/get-started/overview/) en la página de documentos de Docker. 

Para este entorno de compilación, se indica CodeBuild que se utilice una imagen de Docker que contenga una versión del kit de desarrollo de Java (JDK) y Apache Maven.<a name="getting-started-create-build-project-console-procedure"></a>

**Para crear el proyecto de compilación**

1. [Inicia sesión en la consola Consola de administración de AWS y ábrela en codebuild/home AWS CodeBuild . https://console.aws.amazon.com/codesuite/](https://console.aws.amazon.com/codesuite/codebuild/home)

1. Usa el selector de AWS regiones para elegir una AWS región que sea CodeBuild compatible. Para obtener más información, consulte [Puntos de conexión y cuotas de AWS CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region) en la *Referencia general de Amazon Web Services*.

1.  Si aparece una página de CodeBuild información, elija **Crear proyecto de construcción**. De lo contrario, en el panel de navegación, expanda **Compilar**, elija **Proyectos de compilación** y, a continuación, elija **Crear proyecto de compilación**. 

1. En la página **Create build project (Crear proyecto de compilación)**, en **Project configuration (Configuración del proyecto)**, en **Project name (Nombre de proyecto)**, escriba un nombre para este proyecto de compilación (en este ejemplo, `codebuild-demo-project`). Los nombres de los proyectos de compilación deben ser únicos en cada AWS cuenta. Si elige otro nombre, asegúrese de utilizarlo durante todo el tutorial.
**nota**  
En la página **Create build project (Crear proyecto de compilación)**, podría aparecer un mensaje de error similar al siguiente: **You are not authorized to perform this operation (No tiene autorización para realizar esta operación)**. Lo más probable es que se deba a que ha iniciado sesión en Consola de administración de AWS como un usuario que no tiene permisos para crear un proyecto de compilación. Para solucionar este problema, cierre la sesión y Consola de administración de AWS, a continuación, vuelva a iniciarla con las credenciales que pertenezcan a una de las siguientes entidades de IAM:   
Un usuario administrador de su AWS cuenta. Para obtener más información, [consulte Creación del primer usuario y grupo Cuenta de AWS raíz](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 las `AWSCodeBuildAdminAccess` políticas `AmazonS3ReadOnlyAccess` `IAMFullAccess` administradas y las correspondientes a ese usuario o a un grupo de IAM al que pertenezca el usuario. Si no tiene ningún usuario o grupo en su AWS cuenta con estos permisos y no puede añadirlos a su usuario o grupo, póngase en contacto con el administrador de la AWS cuenta para obtener ayuda. Para obtener más información, consulte [AWS políticas gestionadas (predefinidas) para AWS CodeBuild](auth-and-access-control-iam-identity-based-access-control.md#managed-policies).
Ambas opciones incluyen permisos de administrador que le permiten crear un proyecto de compilación y completar este tutorial. Le recomendamos que utilice siempre los permisos mínimos necesarios para realizar la tarea. Para obtener más información, consulte [AWS CodeBuild referencia de permisos](auth-and-access-control-permissions-reference.md).

1. En **Fuente**, como **Proveedor de código fuente**, elija **Amazon S3**.

1. Para **Bucket**, selecciona **codebuild- *region-ID* - *account-ID* -input-bucket**.

1.  En **S3 object key (Clave de objeto de S3)**, escriba **MessageUtil.zip**.

1. En **Environment (Entorno)**, para **Environment image (Imagen de entorno)**, deje **Managed image (Imagen administrada)** seleccionado.

1. En **Sistema operativo**, elija **Amazon Linux**.

1. En **Runtime(s) (Tiempo de ejecución)**, elija **Standard (Estándar)**.

1. ****En Imagen, elija -x86\$164-standard:corretto11. aws/codebuild/amazonlinux****

1. En **Service role (Rol de servicio)**, deje la opción **New service role (Nuevo rol de servicio)** seleccionada y no haga ningún cambio en **Role name (Nombre de rol)**.

1. En **Buildspec**, deje **Use a buildspec file (Usar un archivo buildspec)** seleccionado.

1. En **Artefactos**, como **Tipo**, seleccione **Amazon S3**.

1. **En el nombre del bucket,** **selecciona codebuild- - -output-bucket. *region-ID* *account-ID***

1. Deje **Name (Nombre)** y **Path (Ruta)** en blanco.

1. Elija **Crear el proyecto de compilación**.

### Paso 6: ejecutar la compilación
<a name="getting-started-run-build-console"></a>

(Paso anterior: [Paso 5: crear el proyecto de compilación](#getting-started-create-build-project-console))

En este paso, AWS CodeBuild indicas que se ejecute la compilación con la configuración del proyecto de compilación.<a name="getting-started-run-build-console-console-procedure"></a>

**Para ejecutar la compilación**

1. Abre la AWS CodeBuild consola en [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. En el panel de navegación, elija **Proyectos de compilación**.

1. **En la lista de proyectos de compilación, elija y, a continuación **codebuild-demo-project**, elija Iniciar compilación.** La compilación comienza inmediatamente.

### Paso 7: ver información resumida sobre la compilación
<a name="getting-started-monitor-build-console"></a>

(Paso anterior: [Paso 6: ejecutar la compilación](#getting-started-run-build-console))

En este paso, verá información resumida sobre el estado de la compilación.

#### Para ver la información resumida de la compilación
<a name="getting-started-monitor-build-console-title"></a><a name="getting-started-run-build-console-procedure"></a>

1. Si no se muestra la *<build-ID>* página **codebuild-demo-project:**, en la barra de navegación, seleccione **Crear historial**. A continuación, en la lista de proyectos de construcción, para **Proyecto**, elija el enlace **Construir y ejecutar** para **codebuild-demo-project**. Debe haber un solo enlace coincidente. (Si ya ha completado este tutorial antes, elija el vínculo con el valor más reciente en la columna **Completed (Completado)**).

1. En la página **Estado de compilación**, en **Detalles de fase**, se deben mostrar las fases de compilación siguientes como **Con éxito** en la columna **Estado**:
   + **SUBMITTED**
   + **QUEUED**
   + **PROVISIONING**
   + **DOWNLOAD\$1SOURCE**
   + **INSTALL**
   + **PRE\$1BUILD**
   + **BUILD**
   + **POST\$1BUILD**
   + **UPLOAD\$1ARTIFACTS**
   + **FINALIZING**
   + **COMPLETED**

   En **Build Status (Estado de la compilación)**, debería mostrarse **Succeeded (Realizado correctamente)**.

   Si en su lugar aparece **In Progress (En curso)** elija el botón de actualizar. 

1. Junto a cada fase de compilación, el valor **Duration (Duración)** indica cuánto tiempo ha tardado la fase de compilación. El valor **End time (Hora de finalización)** indica que esa fase de compilación ha terminado.

### Paso 8: ver información detallada sobre la compilación
<a name="getting-started-build-log-console"></a>

(Paso anterior: [Paso 7: ver información resumida sobre la compilación](#getting-started-monitor-build-console))

En este paso, verás información detallada sobre tus CloudWatch registros de compilación.

**nota**  
 Para proteger la información confidencial, los CodeBuild registros ocultan lo siguiente:   
 AWS clave de acceso IDs. Para obtener más información, consulte [Administración de claves de acceso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) en la *Guía del usuario de AWS Identity and Access Management *. 
 Cadenas especificadas mediante el almacén de parámetros. Para obtener más información, consulte [Almacén de parámetros de Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) y [Tutorial de la consola del almacén de parámetros de Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-walk.html#sysman-paramstore-console) en la *Guía del usuario de Amazon EC2 Systems Manager*. 
 Cadenas especificadas mediante AWS Secrets Manager. Para obtener más información, consulte [Administración de claves](security-key-management.md). <a name="getting-started-build-log-console-procedure"></a>

**Para ver información detallada sobre la compilación**

1. Con la página de detalles de la compilación mostrada del paso anterior, se muestran las últimas 10,000 líneas del log de compilación en **Build logs**. Para ver el registro de compilación completo en CloudWatch Logs, selecciona el enlace **Ver todo el registro**. 

1. En el flujo de registro de CloudWatch registros, puedes buscar los eventos del registro. De forma predeterminada, solo se muestra el último conjunto de eventos de log. Para ver eventos de log anteriores, desplácese hasta el principio de la lista.

1. En este tutorial, la mayoría de los eventos de registro contienen información detallada sobre la descarga e instalación de archivos de dependencia de compilación de CodeBuild en su entorno de compilación, lo que probablemente no le interese. Puede usar el cuadro **Filter events** para reducir la información que se muestra. Por ejemplo, si escribe `"[INFO]"` en el cuadro **Filter events (Filtrar eventos)**, solo se muestran los eventos que contienen `[INFO]`. Para obtener más información, consulte [Sintaxis de filtros y patrones](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html) en la *Guía del CloudWatch usuario de Amazon*.

### Paso 9: obtener el artefacto de salida de la compilación
<a name="getting-started-output-console"></a>

(Paso anterior: [Paso 8: ver información detallada sobre la compilación](#getting-started-build-log-console))

En este paso, obtendrá el `messageUtil-1.0.jar` archivo que se CodeBuild creó y se cargó en el depósito de salida.

Puede utilizar la CodeBuild consola o la consola Amazon S3 para completar este paso.



**Para obtener el artefacto de salida de la compilación (AWS CodeBuild consola)**

1. Con la CodeBuild consola aún abierta y la página de detalles de construcción del paso anterior, selecciona la pestaña **Detalles de la construcción** y desplázate hacia abajo hasta la sección **Artefactos**. 
**nota**  
Si la página de detalles de la compilación no se muestra, en la barra de navegación, elija **Historial de compilación** y, a continuación, elija el enlace **Ejecución de la compilación**.

1. El enlace a la carpeta Amazon S3 se encuentra en la **Ubicación de carga de artefactos**. Este enlace abre la carpeta de Amazon S3 donde se encuentra el archivo de artefactos de salida de compilación de `messageUtil-1.0.jar`.

**Para obtener el artefacto de salida de la compilación (consola de Amazon S3)**

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Abra `codebuild-region-ID-account-ID-output-bucket`.

1. Abra la carpeta `codebuild-demo-project`.

1. Abra la carpeta `target`, donde se encuentra el archivo de artefactos de salida de compilación `messageUtil-1.0.jar`.

### Paso 10: eliminar los buckets de S3
<a name="getting-started-clean-up-console"></a>

(Paso anterior: [Paso 9: obtener el artefacto de salida de la compilación](#getting-started-output-console))

Para evitar que se sigan cobrando AWS en tu cuenta, puedes eliminar los cubos de entrada y salida utilizados en este tutorial. Para obtener más instrucciones, consulte [Eliminar o vaciar un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-or-empty-bucket.html) en la *Guía del usuario de Amazon Simple Storage Service*.

Si va a utilizar el usuario de IAM o un usuario administrador de IAM para eliminar estos buckets, el usuario debe tener más permisos de acceso. Añada la siguiente declaración entre los marcadores (*\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1*y*\$1\$1\$1 END ADDING STATEMENTS HERE \$1\$1\$1*) a una política de acceso existente para el usuario. 

Las elipsis (...) de esta declaración se usan para abreviar. No elimine las instrucciones de la política de acceso existente. No escriba estos puntos suspensivos en la política.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:DeleteBucket",
        "s3:DeleteObject"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Encapsulación
<a name="getting-started-next-steps-console"></a>



En este tutorial, AWS CodeBuild solía crear un conjunto de archivos de clases de Java en un archivo JAR. A continuación, ha consultado los resultados de la compilación.

Ahora puede intentar usarlos CodeBuild en sus propios escenarios. Siga las instrucciones en [Planificación de una compilación](planning.md). Si piensa que aún no está preparado, tal vez desee intentar compilar algunos de los ejemplos. Para obtener más información, consulte [Ejemplos basados en casos de uso para CodeBuild](use-case-based-samples.md). 

## Cómo empezar a AWS CodeBuild usar el AWS CLI
<a name="getting-started-cli"></a>

En este tutorial, se utiliza AWS CodeBuild para crear una colección de archivos de entrada de código fuente de muestra (denominados *artefactos de entrada de compilación* o *entrada de compilación*) en una versión desplegable del código fuente (denominada *artefacto de salida de compilación o salida* de *compilación*). En concreto, se indica que se debe CodeBuild utilizar Apache Maven, una herramienta de compilación común, para crear un conjunto de archivos de clases de Java en un archivo de Java Archive (JAR). No necesita estar familiarizado con Apache Maven o Java para completar este tutorial.

Puede trabajar con él CodeBuild a través de la CodeBuild consola AWS CodePipeline AWS CLI, el o el. AWS SDKs En este tutorial se muestra cómo usarlo CodeBuild con AWS CLI. Para obtener información sobre el uso CodePipeline, consulte[Úselo CodeBuild con CodePipeline](how-to-create-pipeline.md).

**importante**  
Los pasos de este tutorial requieren que cree recursos (por ejemplo, un bucket de S3) que podrían generar cargos en su AWS cuenta. Estos incluyen posibles cargos por CodeBuild y por AWS los recursos y acciones relacionados con Amazon S3 y CloudWatch Logs. AWS KMS Para obtener más información, consulte [CodeBuildprecios](https://aws.amazon.com/codebuild/pricing), [precios de Amazon S3](https://aws.amazon.com/s3/pricing), [AWS Key Management Service precios](https://aws.amazon.com/kms/pricing) y [ CloudWatch precios de Amazon](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [

### Paso 1: Crear el código fuente
](#getting-started-cli-create-source-code)
+ [

### Paso 2: creación del archivo de especificación de compilación
](#getting-started-cli-create-build-spec)
+ [

### Paso 3: creación de dos buckets de S3
](#getting-started-cli-input-bucket)
+ [

### Paso 4: cargar el código fuente y el archivo buildspec
](#getting-started-cli-upload-source-code)
+ [

### Paso 5: crear el proyecto de compilación
](#getting-started-cli-create-build-project)
+ [

### Paso 6: ejecutar la compilación
](#getting-started-cli-run-build)
+ [

### Paso 7: ver información resumida sobre la compilación
](#getting-started-cli-monitor-build)
+ [

### Paso 8: ver información detallada sobre la compilación
](#getting-started-cli-build-log)
+ [

### Paso 9: obtener el artefacto de salida de la compilación
](#getting-started-cli-output)
+ [

### Paso 10: eliminar los buckets de S3
](#getting-started-cli-clean-up)
+ [

### Encapsulación
](#getting-started-cli-next-steps)

### Paso 1: Crear el código fuente
<a name="getting-started-cli-create-source-code"></a>

(Parte de: [Cómo empezar a AWS CodeBuild usar el AWS CLI](#getting-started-cli))

En este paso, crea el código fuente que CodeBuild desea incluir en el segmento de salida. Este código fuente se compone de dos archivos de clases Java y un archivo Apache Maven Object Model (POM).

1. En un directorio vacío del equipo o la instancia local, cree esta estructura de directorios.

   ```
   (root directory name)
       `-- src
            |-- main
            |     `-- java
            `-- test
                  `-- java
   ```

1. Con el editor de texto que desee, cree este archivo, asígnele el nombre `MessageUtil.java` y guárdelo en el directorio `src/main/java`.

   ```
   public class MessageUtil {
     private String message;
   
     public MessageUtil(String message) {
       this.message = message;
     }
   
     public String printMessage() {
       System.out.println(message);
       return message;
     }
   
     public String salutationMessage() {
       message = "Hi!" + message;
       System.out.println(message);
       return message;
     }
   }
   ```

   Este archivo de clases crea como resultado la cadena de caracteres que se la ha pasado. El constructor `MessageUtil` establece la cadena de caracteres. El método `printMessage` crea la salida. El método `salutationMessage` muestra `Hi!` seguido de la cadena de caracteres.

1. Cree este archivo, asígnele el nombre `TestMessageUtil.java` y guárdelo en el directorio `/src/test/java`.

   ```
   import org.junit.Test;
   import org.junit.Ignore;
   import static org.junit.Assert.assertEquals;
   
   public class TestMessageUtil {
   
     String message = "Robert";    
     MessageUtil messageUtil = new MessageUtil(message);
      
     @Test
     public void testPrintMessage() {      
       System.out.println("Inside testPrintMessage()");     
       assertEquals(message,messageUtil.printMessage());
     }
   
     @Test
     public void testSalutationMessage() {
       System.out.println("Inside testSalutationMessage()");
       message = "Hi!" + "Robert";
       assertEquals(message,messageUtil.salutationMessage());
     }
   }
   ```

   Este archivo de clases establece la variable `message` de la clase `MessageUtil` en `Robert`. A continuación, comprueba si la variable `message` se ha establecido correctamente comprobando si las cadenas `Robert` y `Hi!Robert` aparecen en la salida.

1. Cree este archivo, asígnele el nombre `pom.xml` y guárdelo en el directorio raíz (nivel superior).

   ```
   <project xmlns="http://maven.apache.org/POM/4.0.0" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.example</groupId>
     <artifactId>messageUtil</artifactId>
     <version>1.0</version>
     <packaging>jar</packaging>
     <name>Message Utility Java Sample App</name>
     <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.11</version>
         <scope>test</scope>
       </dependency>	
     </dependencies>
     <build>
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.8.0</version>
         </plugin>
       </plugins>
     </build>
   </project>
   ```

   Apache Maven utiliza las instrucciones de este archivo para convertir los archivos `MessageUtil.java` y `TestMessageUtil.java` en un archivo denominado `messageUtil-1.0.jar` y, a continuación, ejecuta las pruebas especificadas. 

En este punto, la estructura de directorios debería ser similar a la siguiente.

```
(root directory name)
    |-- pom.xml
    `-- src
         |-- main
         |     `-- java
         |           `-- MessageUtil.java
         `-- test
               `-- java
                     `-- TestMessageUtil.java
```

### Paso 2: creación del archivo de especificación de compilación
<a name="getting-started-cli-create-build-spec"></a>

(Paso anterior: [Paso 1: Crear el código fuente](#getting-started-cli-create-source-code))

En este paso, creará un archivo de especificación de compilación. Una *especificación de compilación* es un conjunto de comandos de compilación y configuraciones relacionadas, en formato YAML, que se CodeBuild utiliza para ejecutar una compilación. Sin una especificación de compilación, CodeBuild no se puede convertir correctamente la entrada de compilación en el resultado de la compilación ni localizar el artefacto de salida de la compilación en el entorno de compilación para cargarlo en el depósito de salida.

Cree este archivo, asígnele el nombre `buildspec.yml` y guárdelo en el directorio raíz (nivel superior).

```
version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11
  pre_build:
    commands:
      - echo Nothing to do in the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn install
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - target/messageUtil-1.0.jar
```

**importante**  
Como una declaración de especificación de compilación debe ser una declaración YAML válida, los espacios de la declaración son importantes. Si el número de espacios de la declaración de especificación de compilación no coincide con esta declaración, la compilación podría producir un error inmediatamente. Puede utilizar un validador de YAML para comprobar si la declaración de especificación de compilación es una declaración YAML válida. 

**nota**  
En lugar de incluir un archivo de especificación de compilación en el código fuente, puede declarar los comandos de la compilación por separado cuando cree un proyecto de compilación. Esto resulta útil si desea compilar el código fuente con diferentes comandos de compilación sin actualizar el código fuente del repositorio cada vez. Para obtener más información, consulte [Sintaxis de buildspec](build-spec-ref.md#build-spec-ref-syntax).

En esta declaración de especificación de compilación:
+ `version` representa la versión del estándar de especificación de compilación que se va a usar. Esta declaración de especificación de compilación usa la última versión, `0.2`.
+ `phases` representa las fases de compilación en las que puede indicar a CodeBuild que ejecute comandos. Estas fases de compilación se muestran aquí como `install`, `pre_build`, `build` y `post_build`. No puede cambiar los nombres de estas fases de compilación ni puede crear nombres de fases de compilación adicionales. 

  En este ejemplo, durante la `build` fase, CodeBuild ejecuta el `mvn install` comando. Este comando indica a Apache Maven que compile, pruebe y empaquete los archivos de clases Java compilados en un artefacto de salida de la compilación. En aras de una mayor exhaustividad, se incluyen algunos comandos `echo` en cada fase de compilación de este ejemplo. Cuando vea información de compilación detallada más adelante en este tutorial, la salida de estos comandos de `echo` puede ayudarlo a comprender mejor cómo CodeBuild ejecuta los comandos y en qué orden lo hace. (Aunque en este ejemplo se incluyen todas las fases de compilación, no es necesario que incluya una fase de compilación si no piensa ejecutar ningún comando durante esa fase). Para cada fase de compilación, CodeBuild ejecuta cada comando especificado, uno a la vez, en el orden indicado, de principio a fin. 
+ `artifacts`representa el conjunto de artefactos de salida de la compilación que se CodeBuild carga en el depósito de salida. `files`representa los archivos que se van a incluir en el resultado de la compilación. CodeBuild carga el único `messageUtil-1.0.jar` archivo que se encuentra en el directorio `target` relativo del entorno de compilación. El nombre del archivo `messageUtil-1.0.jar` y el nombre del directorio `target` se basan en la forma en que Apache Maven crea y almacena los artefactos de salida de la compilación para este ejemplo únicamente. En sus propias compilaciones, estos nombres de archivos y directorios son diferentes. 

Para obtener más información, consulte la [Referencia de la especificación de compilación](build-spec-ref.md).

En este punto, la estructura de directorios debería ser similar a la siguiente.

```
(root directory name)
    |-- pom.xml
    |-- buildspec.yml
    `-- src
         |-- main
         |     `-- java
         |           `-- MessageUtil.java
         `-- test
               `-- java
                     `-- TestMessageUtil.java
```

### Paso 3: creación de dos buckets de S3
<a name="getting-started-cli-input-bucket"></a>

(Paso anterior: [Paso 2: creación del archivo de especificación de compilación](#getting-started-cli-create-build-spec))

Aunque puede usar un solo bucket para este tutorial, dos buckets hacen que sea más fácil ver de dónde proviene la entrada de compilación y hacia dónde va la salida de compilación.
+ Uno de estos buckets (*bucket de entrada*) almacena la entrada de compilación. En este tutorial, el nombre de este depósito de entrada es`codebuild-region-ID-account-ID-input-bucket`, donde *region-ID* está la AWS región del depósito y *account-ID* el ID de su AWS cuenta.
+ El otro bucket (*bucket de salida*) almacena la salida de la compilación. En este tutorial, el nombre de este bucket de salida es `codebuild-region-ID-account-ID-output-bucket`.

Si elige nombres diferentes para estos buckets, asegúrese de usarlos en este tutorial.

Estos dos grupos deben estar en la misma AWS región que tus compilaciones. Por ejemplo, si ordenas CodeBuild ejecutar una compilación en la región EE.UU. Este (Ohio), estos grupos también deben estar en la región EE.UU. Este (Ohio).

Para obtener más información, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

**nota**  
Aunque CodeBuild también es compatible con las entradas de compilación almacenadas en CodeCommit los repositorios de Bitbucket y en los repositorios, en este tutorial no se muestra cómo utilizarlas. GitHub Para obtener más información, consulte [Planificación de una compilación](planning.md).

### Paso 4: cargar el código fuente y el archivo buildspec
<a name="getting-started-cli-upload-source-code"></a>

(Paso anterior: [Paso 3: creación de dos buckets de S3](#getting-started-cli-input-bucket))

En este paso, añadirá el código fuente y el archivo de especificación de compilación al bucket de entrada.

Con la utilidad zip del sistema operativo, cree un archivo llamado `MessageUtil.zip` que incluya `MessageUtil.java`, `TestMessageUtil.java`, `pom.xml` y `buildspec.yml`. 

La estructura de directorios del archivo `MessageUtil.zip` debe ser similar a la siguiente.

```
MessageUtil.zip
    |-- pom.xml
    |-- buildspec.yml
    `-- src
         |-- main
         |     `-- java
         |           `-- MessageUtil.java
         `-- test
               `-- java
                     `-- TestMessageUtil.java
```

**importante**  
No incluya el directorio `(root directory name)`, solo los directorios y archivos del directorio `(root directory name)`.

Cargue el archivo `MessageUtil.zip` identificado en el bucket de entrada denominado `codebuild-region-ID-account-ID-input-bucket`. 

**importante**  
 CodeCommitEn GitHub el caso de los repositorios y de Bitbucket, por convención, debes almacenar un archivo de especificaciones de compilación denominado `buildspec.yml` en la raíz (nivel superior) de cada repositorio o incluir la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación. No cree un archivo ZIP que contenga el código fuente del repositorio y el archivo de especificación de compilación.   
Solo para entradas de compilación almacenadas en buckets de S3, debe crear un archivo ZIP que contenga el código fuente y convencionalmente, un archivo de especificación de compilación denominado `buildspec.yml` en la raíz (nivel superior) o incluya la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación.  
Si desea utilizar otro nombre para el archivo de especificación de compilación, o si quiere hacer referencia a una especificación de compilación en una ubicación distinta de la raíz, puede especificar una invalidación de la especificación de compilación como parte de la definición del proyecto de compilación. Para obtener más información, consulte [Nombre de archivo y ubicación de almacenamiento de buildspec](build-spec-ref.md#build-spec-ref-name-storage).

### Paso 5: crear el proyecto de compilación
<a name="getting-started-cli-create-build-project"></a>

(Paso anterior: [Paso 4: cargar el código fuente y el archivo buildspec](#getting-started-cli-upload-source-code))

En este paso, crearás un proyecto de compilación que se AWS CodeBuild utilizará para ejecutar la compilación. Un *proyecto de compilación* incluye información sobre cómo ejecutar una compilación, incluido dónde obtener el código fuente, qué entorno de compilación se debe usar, qué comandos de compilación se deben ejecutar y dónde se debe almacenar el resultado de la compilación. Un *entorno de compilación* representa una combinación del sistema operativo, el tiempo de ejecución del lenguaje de programación y las herramientas que se CodeBuild utilizan para ejecutar una compilación. El entorno de compilación se expresa como una imagen de Docker. Para obtener más información, consulte [Descripción general de Docker](https://docs.docker.com/get-started/overview/) en la página de documentos de Docker. 

Para este entorno de compilación, se indica CodeBuild que se utilice una imagen de Docker que contenga una versión del kit de desarrollo de Java (JDK) y Apache Maven.<a name="getting-started-cli-create-build-project-cli"></a>

**Para crear el proyecto de compilación**

1. Usa el para ejecutar el AWS CLI comando: **create-project**

   ```
   aws codebuild create-project --generate-cli-skeleton
   ```

   En el resultado se muestran datos con formato JSON. Copie los datos en un archivo cuyo nombre se encuentre `create-project.json` en una ubicación del equipo o instancia local en la AWS CLI que esté instalado. Si ha elegido usar un nombre de archivo diferente, asegúrese de usarlo en este tutorial.

   Modifique los datos copiados de modo que sigan este formato y, a continuación, guarde los resultados:

   ```
   {
     "name": "codebuild-demo-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip"
     },
     "artifacts": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-output-bucket"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "serviceIAMRole"
   }
   ```

   *serviceIAMRole*Sustitúyalo por el nombre de recurso de Amazon (ARN) de un rol de CodeBuild servicio (por ejemplo,`arn:aws:iam::account-ID:role/role-name`). Para crear uno, consulte [CodeBuild Permiten interactuar con otros servicios AWS](setting-up-service-role.md).

   En estos datos:
   + `name` representa un identificador obligatorio para este proyecto de compilación (en este ejemplo, `codebuild-demo-project`). Los nombres de los proyectos de compilación deben ser únicos en todos los proyectos de compilación de su cuenta. 
   + En `source`, `type` es un valor obligatorio que representa el tipo de repositorio del código fuente (en este ejemplo, `S3` para un bucket de Amazon S3).
   + En `source`, `location` representa la ruta del código fuente (en este ejemplo, el nombre del bucket de entrada seguido del nombre del archivo ZIP).
   + En `artifacts`, `type` es un valor obligatorio que representa el tipo de repositorio del artefacto de salida de la compilación (en este ejemplo, `S3` para un bucket de Amazon S3).
   + En `artifacts`, `location` representa el nombre del bucket de salida que ha creado o identificado anteriormente (en este ejemplo, `codebuild-region-ID-account-ID-output-bucket`).
   + En `environment`, `type` es un valor obligatorio que representa el tipo de entorno de compilación (en este ejemplo,`LINUX_CONTAINER`).
   + Para`environment`, `image` es un valor obligatorio que representa la combinación de nombre y etiqueta de imagen de Docker que utiliza este proyecto de compilación, según lo especificado por el tipo de repositorio de imágenes de Docker (en este ejemplo, `aws/codebuild/standard:5.0` para una imagen de Docker en el CodeBuild repositorio de imágenes de Docker). `aws/codebuild/standard`es el nombre de la imagen de Docker. `5.0`es la etiqueta de la imagen de Docker. 

     Para encontrar más imágenes de Docker que pueda utilizar en sus escenarios, consulte [Referencia de entornos de compilación](build-env-ref.md).
   + Para`environment`, `computeType` es un valor obligatorio que representa los recursos informáticos utilizados CodeBuild (en este ejemplo,`BUILD_GENERAL1_SMALL`).
**nota**  
Otros valores disponibles en los datos originales con formato JSON, como `description`, `buildspec`, `auth` (incluido `type` y `resource`), `path`, `namespaceType`, `name` (para `artifacts`), `packaging`, `environmentVariables` (incluido `name` y `value`), `timeoutInMinutes`, `encryptionKey` y `tags` (incluido `key` y `value`) son opcionales. No se utilizan en este tutorial, por lo que no se muestran aquí. Para obtener más información, consulte [Crear un proyecto de compilación (AWS CLI)](create-project.md#create-project-cli).

1. Cambie al directorio que contiene el archivo que acaba de guardar y, a continuación, vuelva a ejecutar el comando **create-project**.

   ```
   aws codebuild create-project --cli-input-json file://create-project.json
   ```

   Si el comando se ejecuta correctamente, aparecen datos similares a los siguientes en el resultado.

   ```
   {
     "project": {
       "name": "codebuild-demo-project",
       "serviceRole": "serviceIAMRole",
       "tags": [],
       "artifacts": {
         "packaging": "NONE",
         "type": "S3",
         "location": "codebuild-region-ID-account-ID-output-bucket",
         "name": "message-util.zip"
       },
       "lastModified": 1472661575.244,
       "timeoutInMinutes": 60,
       "created": 1472661575.244,
       "environment": {
         "computeType": "BUILD_GENERAL1_SMALL",
         "image": "aws/codebuild/standard:5.0",
         "type": "LINUX_CONTAINER",
         "environmentVariables": []
       },
       "source": {
         "type": "S3",
         "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip"
       },
       "encryptionKey": "arn:aws:kms:region-ID:account-ID:alias/aws/s3",
       "arn": "arn:aws:codebuild:region-ID:account-ID:project/codebuild-demo-project"
     }
   }
   ```
   + `project` representa información acerca de este proyecto de compilación.
     + `tags` representa todas las etiquetas que se han declarado.
     + `packaging` representa la forma en que el artefacto de salida de la compilación se almacena en el bucket de salida. `NONE` indica que se crea una carpeta en el bucket de salida. El artefacto de salida de la compilación se almacena en esa carpeta.
     + `lastModified` representa la fecha, en formato de fecha Unix, en la que se cambió por última vez la información sobre el proyecto de compilación.
     + `timeoutInMinutes`representa el número de minutos tras los que CodeBuild se detiene la compilación si no se ha completado. (El valor predeterminado es 60 minutos.)
     + `created` representa la fecha, en formato de fecha Unix, en la que se creó el proyecto de compilación.
     + `environmentVariables`representa cualquier variable de entorno que se haya declarado y que esté disponible CodeBuild para su uso durante la compilación.
     + `encryptionKey`representa el ARN de la clave administrada por el cliente que CodeBuild se utilizó para cifrar el artefacto de salida de la compilación.
     + `arn` representa el ARN del proyecto de compilación.

**nota**  
Tras ejecutar el **create-project** comando, puede aparecer un mensaje de error similar al siguiente: **User: *user-ARN* is not authorized to perform: codebuild:**. CreateProject Lo más probable es que esto se deba a que lo configuró AWS CLI con las credenciales de un usuario que no tiene permisos suficientes CodeBuild para crear proyectos de compilación. Para solucionar este problema, configure la AWS CLI con credenciales que pertenezcan a alguna de las siguientes entidades de IAM:   
Un usuario administrador en tu AWS cuenta. Para obtener más información, [consulte Creación del primer usuario y grupo Cuenta de AWS raíz](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 las `AWSCodeBuildAdminAccess` políticas `AmazonS3ReadOnlyAccess` `IAMFullAccess` administradas y las correspondientes a ese usuario o a un grupo de IAM al que pertenezca el usuario. Si no tiene ningún usuario o grupo en su AWS cuenta con estos permisos y no puede añadirlos a su usuario o grupo, póngase en contacto con el administrador de la AWS cuenta para obtener ayuda. Para obtener más información, consulte [AWS políticas gestionadas (predefinidas) para AWS CodeBuild](auth-and-access-control-iam-identity-based-access-control.md#managed-policies).

### Paso 6: ejecutar la compilación
<a name="getting-started-cli-run-build"></a>

(Paso anterior: [Paso 5: crear el proyecto de compilación](#getting-started-cli-create-build-project))

En este paso, indica que se AWS CodeBuild ejecute la compilación con la configuración del proyecto de compilación.<a name="getting-started-run-build-cli"></a>

**Para ejecutar la compilación**

1. Usa el AWS CLI para ejecutar el **start-build** comando:

   ```
   aws codebuild start-build --project-name project-name
   ```

   *project-name*Sustitúyalo por el nombre del proyecto de compilación del paso anterior (por ejemplo,`codebuild-demo-project`).

1. Si el comando se ejecuta correctamente, aparecerán datos similares a los siguientes en el resultado:

   ```
   {
     "build": { 
       "buildComplete": false,
       "initiator": "user-name",   
       "artifacts": { 
         "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip"
       },
       "projectName": "codebuild-demo-project",
       "timeoutInMinutes": 60, 
       "buildStatus": "IN_PROGRESS",
       "environment": {
         "computeType": "BUILD_GENERAL1_SMALL",
         "image": "aws/codebuild/standard:5.0",
         "type": "LINUX_CONTAINER",
         "environmentVariables": []
       },
       "source": {
         "type": "S3",
         "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip"
       },
       "currentPhase": "SUBMITTED",
       "startTime": 1472848787.882,
       "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE",
       "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE"    
     }
   }
   ```
   + `build` representa información acerca de esta compilación.
     + `buildComplete` indica si la compilación se ha completado (`true`). De lo contrario, `false`.
     + `initiator` representa la entidad que inició la compilación.
     + `artifacts` representa información sobre la salida de la compilación, incluida su ubicación.
     + `projectName` representa el nombre del proyecto de compilación.
     + `buildStatus` representa el estado actual de la compilación cuando se ejecutó el comando **start-build**.
     + `currentPhase` representa la fase actual de la compilación cuando se ejecutó el comando **start-build**.
     + `startTime` representa la hora, en formato de hora Unix, en la que se inició el proceso de compilación.
     + `id` representa el ID de la compilación.
     + `arn` representa el ARN de la compilación.

   Anote el valor de `id`. Lo necesitará en el siguiente paso.

### Paso 7: ver información resumida sobre la compilación
<a name="getting-started-cli-monitor-build"></a>

(Paso anterior: [Paso 6: ejecutar la compilación](#getting-started-cli-run-build))

En este paso, verá información resumida sobre el estado de la compilación.<a name="getting-started-cli-monitor-build-cli"></a>

**Para ver la información resumida de la compilación**
+ Utilice el AWS CLI para ejecutar el **batch-get-builds** comando.

  ```
  aws codebuild batch-get-builds --ids id
  ```

  *id*Sustitúyalo por el `id` valor que aparecía en el resultado del paso anterior.

  Si el comando se ejecuta correctamente, aparecen datos similares a los siguientes en el resultado.

  ```
  {
    "buildsNotFound": [],
    "builds": [
      {
        "buildComplete": true,
        "phases": [
          {
            "phaseStatus": "SUCCEEDED",
            "endTime": 1472848788.525,
            "phaseType": "SUBMITTED",
            "durationInSeconds": 0,
            "startTime": 1472848787.882
          },
          ... The full list of build phases has been omitted for brevity ...
          {
            "phaseType": "COMPLETED",
            "startTime": 1472848878.079
          }
        ],
        "logs": {
          "groupName": "/aws/codebuild/codebuild-demo-project",
          "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE",
          "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE"
        },
        "artifacts": {
          "md5sum": "MD5-hash",
          "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip",
          "sha256sum": "SHA-256-hash"
        },
        "projectName": "codebuild-demo-project",
        "timeoutInMinutes": 60,
        "initiator": "user-name",
        "buildStatus": "SUCCEEDED",
        "environment": {
          "computeType": "BUILD_GENERAL1_SMALL",
          "image": "aws/codebuild/standard:5.0",
          "type": "LINUX_CONTAINER",
          "environmentVariables": []
        },
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip"
        },
        "currentPhase": "COMPLETED",
        "startTime": 1472848787.882,
        "endTime": 1472848878.079,
        "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE",
        "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE"      
      }
    ]
  }
  ```
  + `buildsNotFound`representa la compilación IDs de cualquier compilación en la que no haya información disponible. En este ejemplo, debería estar vacío.
  + `builds` representa información de cada compilación con información disponible. En este ejemplo, en el resultado aparece información sobre una única compilación.
    + `phases` representa el conjunto de fases de compilación que CodeBuild ejecuta durante el proceso de compilación. La información sobre cada fase de compilación se muestra por separado como `startTime`, `endTime` y `durationInSeconds` (cuándo se inició y terminó la fase de compilación, en formato de hora Unix, y cuánto duró, en segundos), así como `phaseType` como (`SUBMITTED`, `PROVISIONING`, `DOWNLOAD_SOURCE`, `INSTALL`, `PRE_BUILD`, `BUILD`, `POST_BUILD`, `UPLOAD_ARTIFACTS`, `FINALIZING` o `COMPLETED`) y `phaseStatus` (como `SUCCEEDED`, `FAILED`, `FAULT`, `TIMED_OUT`, `IN_PROGRESS` o `STOPPED`). La primera vez que ejecute el comando **batch-get-builds**, es posible que no haya muchas fases (o que no haya ninguna). Después de ejecuciones posteriores del comando **batch-get-builds** con el mismo ID de compilación, deberían aparecer más fases de compilación en el resultado.
    + `logs`representa la información de Amazon CloudWatch Logs sobre los registros de la compilación.
    + `md5sum` MD5 y `sha256sum` representan los hash SHA-256 del artefacto de salida de la compilación. Aparecerán en el resultado solamente si el valor `packaging` del proyecto de compilación se establece en `ZIP`. (No ha establecido este valor en este tutorial). Puede utilizar estos valores hash junto con una herramienta de suma de comprobación para confirmar la integridad y autenticidad de los archivos.
**nota**  
También puede utilizar la consola de Amazon S3 para ver estos valores hash. Seleccione la casilla situada junto al artefacto de salida de la compilación, elija **Actions (Acciones)** y luego elija **Properties (Propiedades)**. ****En el panel de **propiedades**, expanda **Metadatos** y vea los valores de -content-md5 y -content-sha256x-amz-meta-codebuild. x-amz-meta-codebuild**** (En la consola Amazon S3, el **ETag**valor del artefacto de salida de la compilación no debe interpretarse como el hash ni como el hash MD5 SHA-256).  
Si usa el AWS SDKs para obtener estos hashes, los valores se denominan y. `codebuild-content-md5` `codebuild-content-sha256` 
    + `endTime` representa la hora, en formato de hora Unix, en la que terminó el proceso de compilación.
**nota**  
Los metadatos de Amazon S3 tienen un nombre de CodeBuild encabezado `x-amz-meta-codebuild-buildarn` que contiene el nombre `buildArn` de la CodeBuild compilación que publica los artefactos en Amazon S3. Se añade `buildArn` para permitir el seguimiento de las notificaciones en la fuente y para hacer referencia a la compilación de donde procede el artefacto.

### Paso 8: ver información detallada sobre la compilación
<a name="getting-started-cli-build-log"></a>

(Paso anterior: [Paso 7: ver información resumida sobre la compilación](#getting-started-cli-monitor-build))

En este paso, verá información detallada sobre sus CloudWatch registros de compilación.

**nota**  
 Para proteger la información confidencial, los CodeBuild registros ocultan lo siguiente:   
 AWS clave de acceso IDs. Para obtener más información, consulte [Administración de claves de acceso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) en la *Guía del usuario de AWS Identity and Access Management *. 
 Cadenas especificadas mediante el almacén de parámetros. Para obtener más información, consulte [Almacén de parámetros de Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) y [Tutorial de la consola del almacén de parámetros de Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-walk.html#sysman-paramstore-console) en la *Guía del usuario de Amazon EC2 Systems Manager*. 
 Cadenas especificadas mediante AWS Secrets Manager. Para obtener más información, consulte [Administración de claves](security-key-management.md). <a name="getting-started-cli-build-log-cli"></a>

**Para ver información detallada sobre la compilación**

1. Utilice un navegador web para ir a la ubicación `deepLink` que aparecía en el resultado del paso anterior (por ejemplo, `https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE`).

1. En el flujo de registro de CloudWatch registros, puede examinar los eventos del registro. De forma predeterminada, solo se muestra el último conjunto de eventos de log. Para ver eventos de log anteriores, desplácese hasta el principio de la lista.

1. En este tutorial, la mayoría de los eventos de registro contienen información detallada sobre la descarga e instalación de archivos de dependencia de compilación de CodeBuild en su entorno de compilación, lo que probablemente no le interese. Puede usar el cuadro **Filter events** para reducir la información que se muestra. Por ejemplo, si escribe `"[INFO]"` en el cuadro **Filter events (Filtrar eventos)**, solo se muestran los eventos que contienen `[INFO]`. Para obtener más información, consulte [Sintaxis de filtros y patrones](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html) en la *Guía del CloudWatch usuario de Amazon*.

Estas partes de una secuencia de CloudWatch registros pertenecen a este tutorial.

```
...
[Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD 
[Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase...
[Container] 2016/04/15 17:49:42 Entering pre_build phase... 
[Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true 
[Container] 2016/04/15 17:49:42 Entering phase BUILD 
[Container] 2016/04/15 17:49:42 Running command echo Entering build phase... 
[Container] 2016/04/15 17:49:42 Entering build phase...
[Container] 2016/04/15 17:49:42 Running command mvn install 
[Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... 
[Container] 2016/04/15 17:49:44 [INFO]
[Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ 
[Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 
[Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ 
... 
[Container] 2016/04/15 17:49:55 ------------------------------------------------------- 
[Container] 2016/04/15 17:49:55  T E S T S 
[Container] 2016/04/15 17:49:55 ------------------------------------------------------- 
[Container] 2016/04/15 17:49:55 Running TestMessageUtil 
[Container] 2016/04/15 17:49:55 Inside testSalutationMessage() 
[Container] 2016/04/15 17:49:55 Hi!Robert 
[Container] 2016/04/15 17:49:55 Inside testPrintMessage() 
[Container] 2016/04/15 17:49:55 Robert 
[Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec
[Container] 2016/04/15 17:49:55  
[Container] 2016/04/15 17:49:55 Results : 
[Container] 2016/04/15 17:49:55  
[Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 
...
[Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ 
[Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS 
[Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ 
[Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s 
[Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 
[Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M 
[Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ 
[Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true 
[Container] 2016/04/15 17:49:56 Entering phase POST_BUILD 
[Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... 
[Container] 2016/04/15 17:49:56 Entering post_build phase... 
[Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true 
[Container] 2016/04/15 17:49:57 Preparing to copy artifacts 
[Container] 2016/04/15 17:49:57 Assembling file list 
[Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar 
[Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar 
[Container] 2016/04/15 17:49:57 Creating zip artifact
```

En este ejemplo, completó CodeBuild correctamente las fases previa, posterior y posterior a la compilación. Ha ejecutado las pruebas unitarias y ha compilado correctamente el archivo `messageUtil-1.0.jar`.

### Paso 9: obtener el artefacto de salida de la compilación
<a name="getting-started-cli-output"></a>

(Paso anterior: [Paso 8: ver información detallada sobre la compilación](#getting-started-cli-build-log))

En este paso, obtendrá el `messageUtil-1.0.jar` archivo que se CodeBuild creó y se cargó en el depósito de salida.

Puede utilizar la CodeBuild consola o la consola Amazon S3 para completar este paso.



**Para obtener el artefacto de salida de la compilación (AWS CodeBuild consola)**

1. Con la CodeBuild consola aún abierta y la página de detalles de construcción del paso anterior, selecciona la pestaña **Detalles de la construcción** y desplázate hacia abajo hasta la sección **Artefactos**. 
**nota**  
Si la página de detalles de la compilación no se muestra, en la barra de navegación, elija **Historial de compilación** y, a continuación, elija el enlace **Ejecución de la compilación**.

1. El enlace a la carpeta Amazon S3 se encuentra en la **Ubicación de carga de artefactos**. Este enlace abre la carpeta de Amazon S3 donde se encuentra el archivo de artefactos de salida de compilación de `messageUtil-1.0.jar`.

**Para obtener el artefacto de salida de la compilación (consola de Amazon S3)**

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Abra `codebuild-region-ID-account-ID-output-bucket`.

1. Abra la carpeta `codebuild-demo-project`.

1. Abra la carpeta `target`, donde se encuentra el archivo de artefactos de salida de compilación `messageUtil-1.0.jar`.

### Paso 10: eliminar los buckets de S3
<a name="getting-started-cli-clean-up"></a>

(Paso anterior: [Paso 9: obtener el artefacto de salida de la compilación](#getting-started-cli-output))

Para evitar que se sigan cobrando AWS en tu cuenta, puedes eliminar los cubos de entrada y salida utilizados en este tutorial. Para obtener más instrucciones, consulte [Eliminar o vaciar un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-or-empty-bucket.html) en la *Guía del usuario de Amazon Simple Storage Service*.

Si va a utilizar el usuario de IAM o un usuario administrador de IAM para eliminar estos buckets, el usuario debe tener más permisos de acceso. Añada la siguiente declaración entre los marcadores (*\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1*y*\$1\$1\$1 END ADDING STATEMENTS HERE \$1\$1\$1*) a una política de acceso existente para el usuario. 

Las elipsis (...) de esta declaración se usan para abreviar. No elimine las instrucciones de la política de acceso existente. No escriba estos puntos suspensivos en la política.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:DeleteBucket",
        "s3:DeleteObject"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Encapsulación
<a name="getting-started-cli-next-steps"></a>



En este tutorial, AWS CodeBuild solía crear un conjunto de archivos de clases de Java en un archivo JAR. A continuación, ha consultado los resultados de la compilación.

Ahora puede intentar usarlos CodeBuild en sus propios escenarios. Siga las instrucciones en [Planificación de una compilación](planning.md). Si piensa que aún no está preparado, tal vez desee intentar compilar algunos de los ejemplos. Para obtener más información, consulte [Ejemplos basados en casos de uso para CodeBuild](use-case-based-samples.md). 