Ejemplo de Amazon Elastic File System paraAWS 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 paraAWS CodeBuild

Puede que desee crear susAWS CodeBuild compilaciones en Amazon Elastic File System, un servicio de archivos compartido y escalable para instancias de Amazon EC2. La capacidad de almacenamiento de Amazon EFS es elástica, por lo que aumenta o se reduce a medida que se agregan 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 de Amazon EFS. Antes de empezar, debe tener una aplicación Java lista para compilar que esté cargada en un depósito de entrada de S3 o en unAWS CodeCommit repositorio de GitHub Enterprise Server o Bitbucket. GitHub

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 describen los tres pasos de alto nivel necesarios para utilizar Amazon EFS conAWS CodeBuild:

  1. Cree una Virtual Private Cloud (VPC) en suAWS cuenta.

  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 aparece al ver 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 se admite en 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 usar subredes privadas cuando vayaAWS CodeBuild a montar el sistema de archivos que creó 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.

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

Cree un sistema de archivos Amazon EFS simple para este ejemplo con la VPC que creó anteriormente.

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

  2. Seleccione Create file system (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 Next Step (Paso siguiente).

  6. En Agregar etiquetas, como clave de nombre predeterminada, en Valor, introduzca el nombre del sistema de archivos de Amazon EFS.

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

  8. En Configure client access (Configurar acceso de cliente), seleccione Next Step (Paso siguiente).

  9. Seleccione Create File System (Crear sistema de archivos).

  10. (Opcional) Le recomendamos que añada una política a su sistema de archivos de Amazon EFS que exija 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 Impulsar el cifrado en tránsito para todos los clientes y, a continuación, elija Guardar.

Cree un CodeBuild proyecto para usarlo con Amazon EFS

Cree un proyecto de AWS CodeBuild que utilice la VPC que creó anteriormente en este ejemplo. Cuando se ejecuta la compilación, monta el sistema de archivos Amazon EFS 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 laAWS CodeBuild consola 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 Project name (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 Environment image (Imagen de entorno), elija Managed image (Imagen administrada).

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

  8. En Runtime(s), elija Standard (Estándar).

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

  10. En Environment type (Tipo de entorno), elija Linux.

  11. Seleccione Privileged (Con privilegios).

    nota

    De forma predeterminada, los contenedores Docker no permiten el acceso a ningún dispositivo. El modo privilegiado otorga acceso al contenedor Docker de un proyecto de compilación a todos los dispositivos. Para obtener más información, consulte la sección sobre privilegios en tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs.

  12. En Service role (Rol de servicio), elija New service role (Nuevo rol de servicio). En Nombre del rol, escriba un nombre para el rol CodeBuild creado para usted.

  13. Expanda Additional configuration (Configuración adicional).

  14. En VPC, elija el ID de VPC.

  15. En Subnets (Subredes), elija una o varias subredes privadas asociadas con su VPC. Debe utilizar subredes privadas en una compilación que monte 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. Debe tener menos de 129 caracteres y contener únicamente caracteres alfanuméricos y caracteres de subrayado. CodeBuild usa 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 del contenedor de compilación donde está montado el sistema de archivos. Si este directorio no existe, lo CodeBuild crea durante la compilación.

    • (Opcional) Introduzca las opciones de montaje. Si deja en blanco las opciones de montaje, 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 de montaje de NFS recomendadas en la Guía del usuario de Amazon Elastic File System User Guide.

  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 especificación 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 Start build.

CodeBuild y resumen de ejemplo de Amazon EFS

Una vez compilado el proyecto de AWS CodeBuild:

  • Tiene un archivo.jar creado por su aplicación Java que está integrado en su sistema de archivos Amazon EFS en el directorio de puntos 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 la API Montaje de sistemas de archivos en la Guía del usuario de Amazon Elastic File System.

Solución de problemas

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

CLIENT_ERROR: error al 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 de sistema de archivos de Amazon EFS personalizada, deberá conceder acceso de lectura y escritura a todos los principales de IAM. Por ejemplo:

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

CLIENT_ERROR: error al montar '127.0.0.1: /'. La conexión ha sido restablecida por un par

Este error puede deberse a dos causas posibles:

  • 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. Para solucionar este problema, añada una regla de entrada que permita todo el tráfico de la VPC (añada el bloque CIDR principal de la VPC) o del propio grupo de seguridad.

VPC_CLIENT_ERROR: Error de EC2 inesperado: UnauthorizedOperation

Este error se produce cuando todas las subredes de la configuración de VPC del CodeBuild proyecto son subredes públicas. Debe tener al menos una subred privada en la VPC para garantizar la conectividad de red.