AWS Elastic Beanstalkmuestra para CodeBuild - AWS CodeBuild

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.

AWS Elastic Beanstalkmuestra para CodeBuild

Este ejemplo se usaAWS CodeBuild con Maven para producir un único archivo WARROOT.war denominado salida de compilación. Después se implementa el archivo WAR en las instancias de un entorno de AWS Elastic Beanstalk.

importante

La ejecución de este ejemplo puede producir cargos en su cuenta de AWS. Estos incluyen los posibles cargos por CodeBuild y porAWS los recursos y acciones relacionados con Amazon S3AWS KMS, CloudWatch Logs y Amazon EC2. Para obtener más información, consulte CodeBuild precios, precios de Amazon S3, AWS Key Management Serviceprecios, CloudWatch precios de Amazon y precios de Amazon EC2.

Crear el código fuente

En esta sección, usará Maven para producir el código fuente. Más adelante, se utiliza CodeBuild para crear un archivo WAR basado en este código fuente.

  1. Descargue e instale Maven. Para obtener información, consulte Downloading Apache Maven e Installing Apache Maven en el sitio web de Apache Maven.

  2. Cambie a un directorio vacío del equipo o instancia local y, a continuación, ejecute este comando Maven.

    mvn archetype:generate "-DgroupId=com.mycompany.app" "-DartifactId=ROOT" "-DarchetypeArtifactId=maven-archetype-webapp" "-DinteractiveMode=false"

    Si el comando se ejecuta correctamente, se creará esta estructura de directorios y archivos.

    . └── ROOT ├── pom.xml └── src └── main ├── resources └── webapp ├── WEB-INF │ └── web.xml └── index.jsp
  3. Cree un subdirectorio llamado .ebextensions en el directorio ROOT. En el subdirectorio .ebextensions, cree un archivo denominado fix-path.config con este contenido.

    container_commands: fix_path: command: "unzip ROOT.war 2>&1 > /var/log/my_last_deploy.log"

Después de ejecutar Maven, continúe con uno de los siguientes escenarios:

Escenario A: Ejecutar CodeBuild manualmente e implementar en Elastic Beanstalk manualmente

En este escenario, debe crear y cargar el código fuente. A continuación, utilice lasAWS Elastic Beanstalk consolasAWS CodeBuild y para crear el código fuente, crear una aplicación y un entorno de Elastic Beanstalk e implementar el resultado de la compilación en el entorno.

Paso a1: Agregar archivos al código fuente

En este paso, agrega un archivo de configuración de Elastic Beanstalk y un archivo buildspec al código deCrear el código fuente. A continuación, sube el código fuente a un depósito de entrada de S3 o a un CodeCommit repositorio de Bitbucket. GitHub

  1. Cree un archivo denominado buildspec.yml con el siguiente contenido. Guarde el archivo en el directorio ROOT.

    version: 0.2 phases: install: runtime-versions: java: corretto11 post_build: commands: - mvn package - mv target/ROOT.war ROOT.war artifacts: files: - ROOT.war - .ebextensions/**/*
  2. La estructura de archivos debe ser como la siguiente.

    . └── ROOT ├── .ebextensions │ └── fix-path.config ├── src │ └── main │ ├── resources │ └── webapp │ ├── WEB-INF │ │ └── web.xml │ └── index.jsp ├── buildpsec.yml └── pom.xml
  3. Sube el contenido delROOT directorio a un depósito de entrada de S3 o a un CodeCommit repositorio de Bitbucket. GitHub

    importante

    No subasROOT, solo los directorios y archivos que contieneROOT.

    Si utiliza un bucket de entrada de S3, debe tener control de versiones. Asegúrese de crear un archivo ZIP que contenga la estructura de directorios y archivos y, a continuación, cárguelo en el bucket de entrada. No añada ROOT al archivo ZIP, solo los directorios y archivos incluidos en ROOT. Para obtener más información, consulte Cómo configurar el control de versiones en un bucket en la Guía para desarrolladores de Amazon S3.

Paso a2: Crear el proyecto de compilación y ejecutar la compilación

En este paso, utilizará la consola de AWS CodeBuild para crear un proyecto de compilación y después ejecutará una compilación.

  1. Cree o elija un bucket de salida de S3 para almacenar el resultado de la compilación. Si va a almacenar el código fuente en un bucket de entrada de S3, el bucket de salida debe estar en la misma región de AWS que el bucket de entrada.

  2. Abra laAWS CodeBuild consola en https://console.aws.amazon.com/codesuite/codebuild/home.

    Utilice el selector deAWS región para elegir unaAWS región que CodeBuild sea compatible. Debe ser la misma región en la que se encuentra el bucket de salida de S3.

  3. Cree un proyecto de compilación y, a continuación, ejecute una compilación. Para obtener más información, consulte Creación de un proyecto de compilación (consola) y Ejecutar una compilación (consola). Deje todas las opciones con sus valores predeterminados, excepto las siguientes opciones.

    • Para Environment (Entorno):

      • En Environment image (Imagen de entorno), elija Managed image (Imagen administrada).

      • En Operating system (Sistema operativo), elija Amazon Linux 2.

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

      • En Imagen, elija aws/codebuild/amazonlinux2-x86_64-standard:3.0.

    • En Artifacts (Artefactos):

      • En Type (Tipo), elija Amazon S3.

      • En Bucket name (Nombre del bucket), escriba el nombre de un bucket de S3.

      • En Name (Nombre), escriba un nombre de archivo de salida de la compilación que sea fácil de recordar. Incluya la extensión .zip.

      • En Artifacts packaging, elija Zip.

Paso a3: Crear la aplicación y el entorno e implementar

En este paso, va a utilizar la consola de AWS Elastic Beanstalk para crear una aplicación y un entorno. Como parte de la creación del entorno, implementará el resultado de la compilación del paso anterior en el entorno.

  1. Abra laAWS Elastic Beanstalk consola en https://console.aws.amazon.com/elasticbeanstalk.

    Utilice el selector deAWS regiones para elegir laAWS región en la que se almacena el bucket de salida de S3.

  2. Cree una aplicación de Elastic Beanstalk. Para obtener más información, consulte Administración y configuración de aplicaciones de AWS Elastic Beanstalk en la Guía para desarrolladores de AWS Elastic Beanstalk.

  3. Cree un entorno de Elastic Beanstalk para esta aplicación. Para obtener más información, consulte El asistente de creación de nuevo entorno en la Guía para desarrolladores de AWS Elastic Beanstalk. Deje todas las opciones con sus valores predeterminados, excepto las siguientes opciones.

    • En Platform, elija Tomcat.

    • En Application code, seleccione Upload your code y, luego, Upload. En Source code origin (Origen del código fuente), elija Public S3 URL (URL de S3 pública) y escriba la URL completa del archivo ZIP de salida de la compilación en el bucket de salida. Seleccione Upload (Cargar).

  4. Después de que Elastic Beanstalk implemente el resultado de la compilación en el entorno, podrá ver los resultados en un navegador web. Vaya a la URL del entorno de la instancia (por ejemplo, http://my-environment-name.random-string.region-ID.elasticbeanstalk.com). El navegador web debe mostrar el texto Hello World!.

Escenario B: CodePipeline Se usa para ejecutar CodeBuild e implementar en Elastic Beanstalk

En este escenario, realizará los pasos para preparar y cargar el código fuente. Se crea un proyecto de compilación con laAWS Elastic Beanstalk consola CodeBuild y una aplicación y un entorno de Elastic Beanstalk. A continuación, usará la consola de AWS CodePipeline para crear una canalización. Después de crear la canalización, CodePipeline compila el código fuente e implementa el resultado de la compilación en el entorno.

Paso b1: Agregar un archivo de especificación de la compilación al código fuente

En este paso, creará un archivo buildspec y lo agregará al código que creó en Crear el código fuente. A continuación, sube el código fuente a un depósito de entrada de S3 o a un CodeCommit repositorio de Bitbucket. GitHub

  1. Cree un archivo denominado buildspec.yml con el siguiente contenido. Guarde el archivo en el directorio ROOT.

    version: 0.2 phases: install: runtime-versions: java: corretto11 post_build: commands: - mvn package - mv target/ROOT.war ROOT.war artifacts: files: - ROOT.war - .ebextensions/**/*
  2. La estructura de archivos debe ser como la siguiente.

    . └── ROOT ├── .ebextensions │ └── fix-path.config ├── src │ └── main │ ├── resources │ └── webapp │ ├── WEB-INF │ │ └── web.xml │ └── index.jsp ├── buildpsec.yml └── pom.xml
  3. Sube el contenido delROOT directorio a un depósito de entrada de S3 o a un CodeCommit repositorio de Bitbucket. GitHub

    importante

    No subasROOT, solo los directorios y archivos que contieneROOT.

    Si utiliza un bucket de entrada de S3, debe tener control de versiones. Asegúrese de crear un archivo ZIP que contenga la estructura de directorios y archivos y, a continuación, cárguelo en el bucket de entrada. No añada ROOT al archivo ZIP, solo los directorios y archivos incluidos en ROOT. Para obtener más información, consulte Cómo configurar el control de versiones en un bucket en la Guía para desarrolladores de Amazon S3.

Paso b2: Crear un proyecto de compilación

En este paso, creará un proyecto de compilación de AWS CodeBuild que usará con la canalización.

  1. Abra laAWS CodeBuild consola en https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Cree un proyecto de compilación. Para obtener más información, consulte Creación de un proyecto de compilación (consola) y Ejecutar una compilación (consola). Deje todas las opciones con sus valores predeterminados, excepto las siguientes opciones.

    • Para Environment (Entorno):

      • En Environment image (Imagen de entorno), elija Managed image (Imagen administrada).

      • En Operating system (Sistema operativo), elija Amazon Linux 2.

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

      • En Imagen, elija aws/codebuild/amazonlinux2-x86_64-standard:3.0.

    • En Artifacts (Artefactos):

      • En Type (Tipo), elija Amazon S3.

      • En Bucket name (Nombre del bucket), escriba el nombre de un bucket de S3.

      • En Name (Nombre), escriba un nombre de archivo de salida de la compilación que sea fácil de recordar. Incluya la extensión .zip.

      • En Artifacts packaging, elija Zip.

Paso b3: Crear una aplicación y entorno de Elastic Beanstalk

En este paso, se crea una aplicación y un entorno de Elastic Beanstalk para utilizarlos CodePipeline.

  1. Abra la consola de Elastic Beanstalk en https://console.aws.amazon.com/elasticbeanstalk/.

  2. Utilice la consola de AWS Elastic Beanstalk para crear una aplicación. Para obtener más información, consulte Administración y configuración de aplicaciones de AWS Elastic Beanstalk en la Guía para desarrolladores de AWS Elastic Beanstalk.

  3. Utilice la consola de AWS Elastic Beanstalk para crear un entorno. Para obtener más información, consulte El asistente de creación de nuevo entorno en la Guía para desarrolladores de AWS Elastic Beanstalk. Deje todas las opciones con sus valores predeterminados, excepto Platform (Plataforma). En Platform, elija Tomcat.

Paso b4: Crear la canalización e implementar

En este paso, va a utilizar la consola de AWS CodePipeline para crear una canalización. Después de crear y ejecutar la canalización, se CodePipeline usa CodeBuild para compilar el código fuente. CodePipeline luego usa Elastic Beanstalk para implementar el resultado de la compilación en el entorno.

  1. Cree o identifique un rol de servicio que CodePipeline Elastic Beanstalk pueda usar para acceder a los recursos en su nombre. CodeBuild Para obtener más información, consulte Requisitos previos.

  2. Abra la CodePipeline consola en https://console.aws.amazon.com/codesuite/codepipeline/home.

    Utilice el selector deAWS regiones para elegir unaAWS región en la CodeBuild que sea compatible. Si va a almacenar el código fuente en un bucket de entrada de S3, el bucket de salida debe estar en la misma región de AWS que el bucket de entrada.

  3. Cree una canalización. Para obtener información, consulte Cree una canalización que utilice CodeBuild (CodePipelineconsola). Deje todas las opciones con sus valores predeterminados, excepto las siguientes opciones.

    • En Add build stage (Agregar una fase de compilación), en Build provider (Proveedor de compilación), elija AWS CodeBuild. En Project name (Nombre del proyecto), seleccione el proyecto de compilación que acaba de crear.

    • En Add deploy stage (Añadir fase, de implementación), en Deploy provider (Proveedor de implementación), elija AWS Elastic Beanstalk.

      • Para el nombre de la aplicación, elija la aplicación de Elastic Beanstalk que acaba de crear.

      • En Environment name (Nombre del entorno), elija el entorno que acaba de crear.

  4. Una vez que se haya ejecutado la canalización correctamente, podrá ver los resultados en un navegador web. Vaya a la URL del entorno de la instancia (por ejemplo, http://my-environment-name.random-string.region-ID.elasticbeanstalk.com). El navegador web debe mostrar el texto Hello World!.

Ahora, cada vez que realices cambios en el código fuente y los subas al depósito de entrada original de S3 o al CodeCommit repositorio de Bitbucket, CodePipeline detecta el cambio y vuelve a ejecutar la canalización. GitHub Esto hace CodeBuild que se reconstruya el código y, a continuación, Elastic Beanstalk implemente la salida reconstruida en el entorno.

Escenario C: utilice la CLI de Elastic Beanstalk para ejecutarseAWS CodeBuild e implementarse en un entorno de Elastic Beanstalk

En este escenario, realizará los pasos para preparar y cargar el código fuente. A continuación, ejecuta la CLI de Elastic Beanstalk para crear una aplicación y un entorno de Elastic Beanstalk, utilizarlos CodeBuild para crear el código fuente y, a continuación, implementar el resultado de la compilación en el entorno. Para obtener más información, consulte Uso de la CLI de EB CodeBuild en la Guía paraAWS Elastic Beanstalk desarrolladores.

Paso c1: Agregar archivos al código fuente

En este paso, agrega un archivo de configuración de Elastic Beanstalk y un archivo buildspec al código en el que creóCrear el código fuente. Asimismo, creará o identificará un rol de servicio para el archivo buildspec.

  1. Cree o identifique un rol de servicio que Elastic Beanstalk y la CLI puedan usar en su nombre. Para obtener información, consulte Crear un rol CodeBuild de servicio.

  2. Cree un archivo denominado buildspec.yml con el siguiente contenido. Guarde el archivo en el directorio ROOT.

    version: 0.2 phases: install: runtime-versions: java: corretto11 post_build: commands: - mvn package - mv target/ROOT.war ROOT.war artifacts: files: - ROOT.war - .ebextensions/**/* eb_codebuild_settings: CodeBuildServiceRole: my-service-role-name ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:4.0 Timeout: 60

    En el código anterior, my-service-role-namesustitúyalo por el nombre del rol de servicio que creaste o identificaste anteriormente.

  3. La estructura de archivos debe ser como la siguiente.

    . └── ROOT ├── .ebextensions │ └── fix-path.config ├── src │ └── main │ ├── resources │ └── webapp │ ├── WEB-INF │ │ └── web.xml │ └── index.jsp ├── buildpsec.yml └── pom.xml

Paso c2: Instalar y ejecutar la CLI de EB

  1. Si aún no lo ha hecho, instale y configure la CLI de EB en el mismo equipo o instancia en el que creó el código fuente. Para obtener más información, consulte Instalación de la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB) y Configuración de la CLI de EB en la Guía paraAWS Elastic Beanstalk desarrolladores.

  2. Desde la línea de comandos o un terminal, ejecute el comando cd u otro similar para cambiar al directorio (root directory name)/ROOT. Ejecute el comando eb init para configurar la CLI de EB.

    eb init

    Cuando se le solicite:

    • Elija unaAWS región en la queAWS CodeBuild sea compatible y en la que desee crear la aplicación y el entorno de Elastic Beanstalk.

    • Cree una aplicación de Elastic Beanstalk e introduzca un nombre para la aplicación.

    • Elija la plataforma Tomcat.

    • Elija la versión Tomcat 8 Java 8.

    • Elija si desea utilizar SSH para configurar el acceso a las instancias de su entorno.

  3. Desde el mismo directorio, ejecute eleb create comando para crear un entorno de Elastic Beanstalk.

    eb create

    Cuando se le solicite:

    • Escriba el nombre del nuevo entorno o acepte el nombre recomendado.

    • Escriba el prefijo CNAME de DNS del entorno o acepte el valor recomendado.

    • En este ejemplo, acepte el tipo Classic load balancer.

  4. Después de ejecutar el comando eb create, la CLI de EB hace lo siguiente:

    1. Crea un archivo ZIP a partir del código fuente y lo carga en un bucket de S3 de la cuenta.

    2. Crea una aplicación y una versión de la aplicación de Elastic Beanstalk.

    3. Crea un CodeBuild proyecto.

    4. Ejecuta una compilación basada en el nuevo proyecto.

    5. Borra el proyecto una vez completada la compilación.

    6. Crea un entorno de Elastic Beanstalk.

    7. Implementa el resultado de la compilación en el entorno.

  5. Después de que la CLI de EB implemente el resultado de la compilación para el entorno, podrá ver los resultados en un navegador web. Vaya a la URL del entorno de la instancia (por ejemplo, http://my-environment-name.random-string.region-ID.elasticbeanstalk.com). El navegador web debe mostrar el texto Hello World!.

Si lo desea, puede realizar cambios en el código fuente y ejecutar el comando eb deploy desde el mismo directorio. La CLI de EB realiza los mismos pasos que el comando eb create, pero implementa el resultado de la compilación en el entorno existente en lugar de crear un nuevo entorno.

Recursos relacionados