Ejemplo de Amazon Elastic File System para AWS 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.

Ejemplo de Amazon Elastic File System para AWS CodeBuild

Es posible que desee crear las compilaciones de AWS CodeBuild en Amazon Elastic File System, un servicio escalable de archivos compartidos para instancias de Amazon EC2. La capacidad de almacenamiento con Amazon EFS es elástica, por lo que aumenta o disminuye a medida que se añaden y eliminan archivos. Tiene una interfaz de servicios web sencilla que puede utilizar para crear y configurar sistemas de archivos. También administra automáticamente toda la infraestructura de almacenamiento de archivos, por lo que no tiene que preocuparse por la implementación, aplicación de parches o el mantenimiento de configuraciones del sistema de archivos. Para obtener más información, consulte ¿Qué es Amazon Elastic File System? en la Guía del usuario de Amazon Elastic File System.

En este ejemplo, se muestra cómo configurar un CodeBuild proyecto para que monte y, a continuación, cree una aplicación Java en un sistema de archivos Amazon EFS. Antes de empezar, debe tener una aplicación Java lista para ser compilada y cargada en un depósito de entrada de S3 o en un AWS CodeCommit GitHub repositorio de GitHub Enterprise Server o Bitbucket.

Los datos en tránsito para su sistema de archivos están cifrados. Para cifrar los datos en tránsito con una imagen distinta, consulte Cifrado de datos en tránsito.

Pasos generales

En este ejemplo, se explican los tres pasos generales necesarios para utilizar Amazon EFS con AWS CodeBuild:

  1. Crear una nube virtual privada (VPC) en su cuenta de AWS.

  2. Crear un sistema de archivos que utilice esta VPC.

  3. Cree y cree un CodeBuild proyecto que utilice la VPC. El CodeBuild proyecto utiliza lo siguiente para identificar el sistema de archivos:

    • Un identificador único del sistema de archivos. El identificador se elige al especificar el sistema de archivos en el proyecto de compilación.

    • El ID del sistema de archivos. El ID se muestra cuando ve el sistema de archivos en la consola de Amazon EFS.

    • Un punto de montaje. Se trata de un directorio en el contenedor Docker que monta el sistema de archivos.

    • Opciones de montaje. Incluyen detalles sobre cómo montar el sistema de archivos.

nota

Un sistema de archivos creado en Amazon EFS solo es compatible con las plataformas Linux.

Creación de una VPC con AWS CloudFormation

Cree su VPC con una plantilla de AWS CloudFormation.

  1. Siga las instrucciones de Plantilla de VPC de AWS CloudFormation a fin de utilizar AWS CloudFormation para crear una VPC.

    nota

    La VPC que se crea con esta plantilla de AWS CloudFormation tiene dos subredes privadas y dos subredes públicas. Solo debe utilizar subredes privadas cuando use AWS CodeBuild para montar el sistema de archivos que ha creado en Amazon EFS. Si utiliza alguna de las subredes públicas, la compilación genera un error.

  2. Inicie sesión en la AWS Management Console y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  3. Elija la VPC que ha creado con AWS CloudFormation.

  4. En la pestaña Description (Descripción), anote el nombre de la VPC y su ID. Ambos serán necesarios cuando cree su proyecto de AWS CodeBuild más adelante en este ejemplo.

Crear un sistema de archivos de Amazon Elastic File System con su VPC

Cree un sistema de archivos sencillo de Amazon EFS de ejemplo utilizando la VPC que creó anteriormente.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EFS en https://console.aws.amazon.com/efs/.

  2. Seleccione Crear sistema de archivos.

  3. Desde VPC, elija el nombre de VPC que anotó anteriormente en este ejemplo.

  4. Deje las zonas de disponibilidad asociadas a las subredes seleccionadas.

  5. Elija Paso siguiente.

  6. En Añadir etiquetas, para la clave Nombre predeterminada, en Valor, introduzca el nombre de su sistema de archivos de Amazon EFS.

  7. Mantenga Transmisión por ráfagas y Uso general seleccionados como sus modos de desempeño y rendimiento predeterminados, y luego elija Paso siguiente.

  8. En Configurar acceso de cliente, seleccione Paso siguiente.

  9. Seleccione Crear sistema de archivos.

  10. (Opcional) Le recomendamos añadir una política a su sistema de archivos Amazon EFS que imponga el cifrado de los datos en tránsito. En la consola de Amazon EFS, elija Política del sistema de archivos, elija Editar, seleccione la casilla etiquetada Aplicar el cifrado en tránsito para todos los clientes y, a continuación, seleccione Guardar.

Crear un CodeBuild proyecto para usarlo con Amazon EFS

Cree un proyecto de AWS CodeBuild que utilice la VPC que creó anteriormente en este ejemplo. Al ejecutar la compilación, se monta el sistema de archivos de Amazon EFS que se ha creado anteriormente. A continuación, se almacena el archivo .jar que la aplicación Java ha creado en el directorio de puntos de montaje del sistema de archivos.

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

  2. En el panel de navegación, elija Build projects (Proyectos de compilación) y después Create build project (Crear proyecto de compilación).

  3. En Nombre del proyecto, introduzca un nombre para el proyecto.

  4. En Source provider (Proveedor de código fuente), elija el repositorio que contiene la aplicación Java que desea compilar.

  5. Introduzca la información, como la URL del repositorio, que se CodeBuild utiliza para localizar la aplicación. Las opciones son diferentes para cada proveedor de código fuente. Para obtener más información, consulte Choose source provider.

  6. En Imagen de entorno, elija Imagen administrada.

  7. En Sistema operativo, elija Amazon Linux 2.

  8. En Tiempo(s) de ejecución, elija Estándar.

  9. En Imagen, elija aws/codebuild/amazonlinux2-x86_64-standard:4.0.

  10. En Tipo de entorno, elija Linux.

  11. Seleccione Con privilegios.

    nota

    De forma predeterminada, el daemon de Docker está habilitado para compilaciones que no son de VPC. Si quieres usar contenedores Docker para compilaciones de VPC, consulta Privilegios de tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs y habilita el modo privilegiado. Además, Windows no admite el modo privilegiado.

  12. En Rol de servicio, elija Nuevo rol de servicio. En Nombre del rol, introduce un nombre para el rol que se CodeBuild cree para ti.

  13. Expanda Configuración adicional.

  14. En VPC, elija el ID de VPC.

  15. En Subredes, elija una o varias subredes privadas asociadas con su VPC. Debe utilizar subredes privadas en una compilación que monta un sistema de archivos de Amazon EFS. Si utiliza una subred pública, la compilación genera un error.

  16. En Security groups (Grupos de seguridad), elija el grupo de seguridad predeterminado.

  17. En File systems (Sistemas de archivos), escriba la siguiente información:

    • En Identifier (Identificador), introduzca un identificador único del sistema de archivos. El identificador debe tener menos de 129 caracteres y solo debe contener caracteres alfanuméricos y guiones bajos. CodeBuild utiliza este identificador para crear una variable de entorno que identifique el sistema de archivos elástico. El formato de la variable de entorno es CODEBUILD_<file_system_identifier>, en mayúsculas. Por ejemplo, si introduce my_efs, la variable de entorno es CODEBUILD_MY_EFS.

    • En ID, elija el ID del sistema de archivos.

    • (Opcional) Introduzca un directorio en el sistema de archivos. CodeBuild monta este directorio. Si deja Directory path (Ruta del directorio) en blanco, CodeBuild monta todo el sistema de archivos. La ruta es relativa a la raíz del sistema de archivos.

    • En Punto de montaje, introduzca la ruta absoluta del directorio en el contenedor de compilación donde se monta el sistema de archivos. Si este directorio no existe, lo CodeBuild crea durante la compilación.

    • (Opcional) Introduzca las opciones de montaje. Si deja las opciones de montaje en blanco, CodeBuild utiliza sus opciones de montaje predeterminadas:

      nfsvers=4.1 rsize=1048576 wsize=1048576 hard timeo=600 retrans=2

      Para obtener más información, consulte Opciones recomendadas de montaje NFS en la Guía del usuario de Amazon Elastic File System.

  18. En Build specification (Especificación de compilación), elija Insert build commands (Insertar comandos de compilación) y, a continuación, elija Switch to editor (Cambiar a editor).

  19. Introduzca los siguientes comandos de especificaciones de compilación en el editor. Reemplace <file_system_identifier> por el identificador que ha especificado en el paso 17. Use letras mayúsculas (por ejemplo, CODEBUILD_MY_EFS).

    version: 0.2 phases: install: runtime-versions: java: corretto11 build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
  20. Utilice los valores predeterminados para el resto de opciones y, a continuación, elija Create build project (Crear proyecto de compilación). Cuando la compilación se haya completado, se muestra la página de la consola para su proyecto.

  21. Seleccione Iniciar la compilación.

CodeBuild y resumen de muestra de Amazon EFS

Una vez compilado el proyecto de AWS CodeBuild:

  • Tiene un archivo .jar creado por su aplicación Java que se integra en el sistema de archivos de Amazon EFS, en el directorio del punto de montaje.

  • Se crea una variable de entorno que identifica el sistema de archivos con el identificador de sistema de archivos que especificó al crear el proyecto.

Para obtener más información, consulte Montaje de sistemas de archivos en la Guía del usuario de Amazon Elastic File System.

Solución de problemas

Los siguientes son errores que puede encontrar al configurar Amazon EFS con CodeBuild.

CLIENT_ERROR: no se ha podido montar '127.0.0.1: /'. Permiso denegado.

No se admite la autorización de IAM para montar Amazon EFS con CodeBuild. Si utiliza una política personalizada del sistema de archivos de Amazon EFS, tendrá que conceder acceso de lectura y escritura a todos los elementos principales de IAM. Por ejemplo:

"Principal": { "AWS": "*" }

CLIENT_ERROR: no se ha podido montar '127.0.0.1: /'. Un homólogo ha restablecido la conexión.

Existen dos causas posibles para este error:

  • La subred de CodeBuild VPC se encuentra en una zona de disponibilidad diferente a la del destino de montaje de Amazon EFS. Puede resolver este problema añadiendo una subred de VPC en la misma zona de disponibilidad que el destino de montaje de Amazon EFS.

  • El grupo de seguridad no tiene permisos para comunicarse con Amazon EFS. Puede resolver este problema añadiendo una regla de entrada que permita todo el tráfico procedente de la VPC (añada el bloque CIDR principal de la VPC) o del grupo de seguridad en si.

VPC_CLIENT_ERROR: Error de EC2 inesperado: UnauthorizedOperation

Este error se produce cuando todas las subredes de la configuración de VPC CodeBuild del proyecto son subredes públicas. Para garantizar la conectividad de la red, debe habaer como mínimo una subred privada en la VPC.