Solución de problemas AWS CodeBuild - AWS CodeBuild
Apache Maven crea artefactos de referencia en un repositorio incorrectoDe forma predeterminada, los comandos de compilación se ejecutan como usuario raízLas compilaciones pueden generar un error si los nombres de archivo contienen caracteres ajenos al inglés (Estados Unidos)Las compilaciones pueden fallar al obtener parámetros del almacén de parámetros de Amazon EC2No se puede obtener acceso al filtro de ramificaciones en la consola de CodeBuild No se puede ver si la compilación se ha realizado correctamente o no No se ha notificado el estado de la compilación al proveedor de fuentesNo se puede encontrar ni seleccionar la imagen base de la plataforma Windows Server Core 2019 Comandos anteriores de los archivos buildspec no reconocidos por comandos más recientesError: "Access denied" (Acceso denegado) al intentar descargar la cachéAparece el error "BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE" al usar una imagen de compilación personalizada Error: «Se encontró que el contenedor de compilación estaba inactivo antes de completar la compilación. El contenedor de compilación murió porque no tenía memoria suficiente o la imagen de Docker no es compatible. ErrorCode: 500" Error: "Cannot connect to the Docker daemon" (No se puede conectar al demonio de Docker) al ejecutar una compilaciónError: "no CodeBuild está autorizado a ejecutar: sts:AssumeRole" al crear o actualizar un proyecto de compilación Error: «Error al llamar GetBucketAcl: el propietario del bucket ha cambiado o el rol de servicio ya no tiene permiso para llamar a s3:GetBucketAcl» Error: "Failed to upload artifacts: Invalid arn (Error al cargar artefactos: arn no válido)" al ejecutar una compilaciónError: "Error de clon de Git: no es posible acceder a 'your-repository-URL': problema con el certificado de SSL: certificado autofirmado"Error: "The bucket you are attempting to access must be addressed using the specified endpoint (El bucket al que intenta obtener acceso debe direccionarse utilizando el punto de conexión especificado)" al ejecutar una compilaciónError: "Esta imagen de compilación requiere seleccionar al menos una versión de tiempo de ejecución".Error: aparecer el error "QUEUED: INSUFFICIENT_SUBNET" cuando se produce un error en una compilación de una cola de compilacionesError: «No se pudo descargar la caché RequestError: se produjo un error en el envío de la solicitud debido a: x509: no se pudieron cargar las raíces del sistema y no se proporcionaron las raíces»Error: «No se puede descargar el certificado de S3. AccessDenied»Error: "Unable to locate credentials" (No se encuentran credenciales) RequestError error de tiempo de espera cuando se ejecuta CodeBuild en un servidor proxyEl shell de Bourne (sh) debe existir en las imágenes de compilaciónAdvertencia: "Skipping install of runtimes. runtime version selection is not supported by this build image" (Si se omite la instalación de los entornos de ejecución, no se podrá seleccionar la versión del entorno de ejecución en esta imagen de compilación) al ejecutar una compilaciónError: «No se puede verificar JobWorker la identidad»No se ha podido iniciar la compilaciónAcceder a GitHub los metadatos en compilaciones almacenadas en caché localAccessDenied: El propietario del bucket del grupo de informes no coincide con el propietario del bucket de S3...

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.

Solución de problemas AWS CodeBuild

Utilice la información de este tema como ayuda para identificar, diagnosticar y resolver problemas. Para obtener información sobre cómo registrar y supervisar las CodeBuild compilaciones para solucionar problemas, consulteRegistro y monitorización.

Temas

Apache Maven crea artefactos de referencia en un repositorio incorrecto

Problema: cuando usas Maven con un entorno AWS CodeBuild de compilación Java proporcionado, Maven extrae las dependencias de compilación y complementos del repositorio central seguro de Maven en https://repo1.maven.org/maven2. Esto es así aunque el archivo pom.xml del proyecto de compilación declare explícitamente otras ubicaciones para usar en su lugar.

Causa posible: los entornos CodeBuild de compilación de Java siempre incluyen un nombre de archivo settings.xml que está preinstalado en el directorio del entorno de compilación. /root/.m2 Este archivo settings.xml contiene las siguientes declaraciones, que indican a Maven que obtenga siempre las dependencias de la compilación y los complementos del repositorio central seguro de Maven disponible en https://repo1.maven.org/maven2.

<settings> <activeProfiles> <activeProfile>securecentral</activeProfile> </activeProfiles> <profiles> <profile> <id>securecentral</id> <repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>

Solución recomendada: realice la siguiente operación:

  1. Añada un archivo settings.xml al código fuente.

  2. En este archivo settings.xml, use el formato de settings.xml anterior como guía para declarar los repositorios de los que desee que Maven obtenga las dependencias de la compilación y los complementos en su lugar.

  3. En la install fase de tu proyecto de compilación, pide CodeBuild que copies el settings.xml archivo en el directorio del entorno de compilación. /root/.m2 Por ejemplo, considere el siguiente fragmento de un archivo buildspec.yml que ilustra este comportamiento.

    version 0.2 phases: install: commands: - cp ./settings.xml /root/.m2/settings.xml

De forma predeterminada, los comandos de compilación se ejecutan como usuario raíz

Problema: AWS CodeBuild ejecuta tus comandos de compilación como usuario root. Esto ocurre incluso si el Dockerfile de la imagen de compilación correspondiente establece la instrucción USER en otro usuario.

Causa: de forma predeterminada, CodeBuild ejecuta todos los comandos de compilación como usuario root.

Solución recomendada: ninguna.

Las compilaciones pueden generar un error si los nombres de archivo contienen caracteres ajenos al inglés (Estados Unidos)

Problema: cuando se ejecuta una compilación que usa archivos con nombres que contienen caracteres ajenos al inglés de Estados Unidos (por ejemplo, caracteres chinos), la compilación genera un error.

Causa posible: los entornos de compilación proporcionados por AWS CodeBuild tienen su configuración regional predeterminada establecida en. POSIX POSIXla configuración de localización es menos compatible con CodeBuild los nombres de archivo que no son de EE. UU. Son caracteres ingleses y pueden provocar errores en las compilaciones relacionadas.

Solución recomendada: añada los siguientes comandos a la sección pre_build del archivo buildspec. Estos comandos hacen que el entorno de compilación utilice UTF-8 en inglés estadounidense como configuración de localización, lo que es más compatible con CodeBuild los nombres de archivo que no contienen caracteres estadounidenses. Caracteres ingleses.

Para los entornos de compilación basados en Ubuntu:

pre_build: commands: - export LC_ALL="en_US.UTF-8" - locale-gen en_US en_US.UTF-8 - dpkg-reconfigure locales

Para los entornos de compilación basados en Amazon Linux:

pre_build: commands: - export LC_ALL="en_US.utf8"

Las compilaciones pueden fallar al obtener parámetros del almacén de parámetros de Amazon EC2

Problema: cuando una compilación intenta obtener el valor de uno o varios parámetros almacenados en el almacén de parámetros de Amazon EC2, la compilación produce el siguiente error en la fase DOWNLOAD_SOURCE: Parameter does not exist.

Causa posible: el rol de servicio en el que se basa el proyecto de compilación no tiene permiso para llamar a la ssm:GetParameters acción o el proyecto de compilación usa un rol de servicio generado por AWS CodeBuild y que permite llamar a la ssm:GetParameters acción, pero los parámetros tienen nombres que no comienzan por/CodeBuild/.

Soluciones recomendadas:

  • Si el rol de servicio no lo generó CodeBuild, actualiza su definición para poder llamar CodeBuild a la ssm:GetParameters acción. Por ejemplo, la siguiente instrucción de política permite llamar a la acción ssm:GetParameters para obtener parámetros con nombres que empiecen por /CodeBuild/:

    { "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:REGION_ID:ACCOUNT_ID:parameter/CodeBuild/*" } ] }
  • Si el rol de servicio lo generó CodeBuild, actualice su definición para permitir el acceso CodeBuild a los parámetros del almacén de parámetros de Amazon EC2 con nombres distintos de los que comienzan por. /CodeBuild/ Por ejemplo, la siguiente instrucción de política permite llamar a la acción ssm:GetParameters para obtener parámetros con el nombre especificado:

    { "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:REGION_ID:ACCOUNT_ID:parameter/PARAMETER_NAME" } ] }

No se puede obtener acceso al filtro de ramificaciones en la consola de CodeBuild

Problema: la opción de filtro de ramas no está disponible en la consola al crear o actualizar un AWS CodeBuild proyecto.

Causa posible: la opción del filtro de ramificaciones ha quedado en desuso. Se ha sustituido por grupos de filtros de webhook, que proporcionan más control sobre los eventos de webhook que desencadenan una nueva compilación de CodeBuild.

Solución recomendada: para migrar un filtro de ramificaciones que se creó antes de que aparecieran los filtros de webhooks, cree grupos de filtros de webhooks con un filtro HEAD_REF y la expresión regular ^refs/heads/branchName$. Por ejemplo, si la expresión regular del filtro de ramificaciones era ^branchName$, la expresión regular actualizada que debe insertar en el filtro HEAD_REF es ^refs/heads/branchName$. Para obtener más información, consulte Eventos de webhooks de Bitbucket y Filtra los eventos de GitHub webhook (consola).

No se puede ver si la compilación se ha realizado correctamente o no

Problema: al reintentar una compilación, no se puede ver si esta se ha realizado correctamente o no.

Causa posible: la opción de notificar el estado de la compilación no está habilitada.

Soluciones recomendadas: active el estado de creación de informes al crear o actualizar un CodeBuild proyecto. Esta opción indica a CodeBuild que le informe del estado cuando active una compilación. Para obtener más información, consulte reportBuildStatus en la Referencia de la API de AWS CodeBuild .

No se ha notificado el estado de la compilación al proveedor de fuentes

Problema: Tras permitir que un proveedor de fuentes, como Bitbucket GitHub o Bitbucket, informen sobre el estado de la compilación, el estado de la compilación no se actualiza.

Causa posible: el usuario asociado al proveedor de fuentes no tiene acceso de escritura al repositorio.

Soluciones recomendadas: para poder informar del estado de la compilación al proveedor de fuentes, el usuario asociado al proveedor de fuentes debe tener acceso de escritura al repositorio. Si el usuario no tiene acceso de escritura, no es posible actualizar el estado de compilación. Para obtener más información, consulte Acceso al proveedor de fuentes.

No se puede encontrar ni seleccionar la imagen base de la plataforma Windows Server Core 2019

Problema: no se puede encontrar ni seleccionar la imagen base de la plataforma Windows Server Core 2019.

Causa posible: estás utilizando una AWS región que no admite esta imagen.

Soluciones recomendadas: utilice una de las siguientes regiones de AWS compatibles con la imagen base de la plataforma Windows Server Core 2019:

  • Este de EE. UU. (Norte de Virginia)

  • Este de EE. UU. (Ohio)

  • Oeste de EE. UU. (Oregón)

  • Europa (Irlanda)

Comandos anteriores de los archivos buildspec no reconocidos por comandos más recientes

Problema: los resultados de uno o varios comandos del archivo buildspec no los reconocen los comandos posteriores del mismo archivo buildspec. Por ejemplo, un comando podría establecer una variable de entorno local y un comando ejecutado más tarde podría no ser capaz de obtener el valor de esa variable de entorno local.

Causa posible: en la versión de archivo buildspec 0.1, AWS CodeBuild ejecuta cada comando en una instancia distinta del shell predeterminado en el entorno de compilación. Esto significa que cada comando se ejecuta con independencia de los demás. De forma predeterminada, no se puede ejecutar un comando que se base en el estado de un comando anterior.

Soluciones recomendadas: le recomendamos que utilice la versión de especificación de compilación 0.2, que soluciona este problema. Si necesita utilizar la versión de especificación de compilación 0.1, le recomendamos que utilice el operador de encadenamiento de comandos del shell (por ejemplo, && en Linux) para combinar varios comandos en uno solo. También puede incluir un script del shell en el código fuente que contenga varios comandos y después llamar a dicho script desde un solo comando en el archivo buildspec. Para obtener más información, consulte Intérpretes de comandos y comandos de los entornos de compilación y Variables de entorno en los entornos de compilación.

Error: "Access denied" (Acceso denegado) al intentar descargar la caché

Problema: al intentar descargar la caché en un proyecto de compilación que tiene la caché habilitada, aparece el error Access denied.

Causas posibles:

  • Ha configurado la caché como parte de su proyecto de compilación.

  • La caché se ha invalidado recientemente mediante la API InvalidateProjectCache.

  • La función de servicio que utiliza CodeBuild no tiene s3:GetObject s3:PutObject permisos para acceder al depósito de S3 que contiene la memoria caché.

Solución recomendada: durante el primer uso, es normal que aparezca este error inmediatamente después de actualizar la configuración de la caché. Si el error continúa, debe comprobar si el rol de servicio tiene los permisos s3:GetObject y s3:PutObject en el bucket de S3 donde se aloja la caché. Para obtener más información, consulte Especificación de permisos de S3 en la Guía del desarrollador de Amazon S3.

Aparece el error "BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE" al usar una imagen de compilación personalizada

Problema: al intentar ejecutar una compilación que usa una imagen de compilación personalizada, la compilación produce el error BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE.

Causa posible: el tamaño total sin comprimir de la imagen de compilación es mayor que el espacio en disco disponible del tipo de computación del entorno de compilación. Para comprobar el tamaño de la imagen de compilación, use Docker para ejecutar el comando docker images REPOSITORY:TAG. Para obtener una lista del espacio en disco disponible por tipo de computación, consulte Modos y tipos de computación del entorno de compilación.

Solución recomendada: utilice un tipo de computación mayor con más espacio en disco o reduzca el tamaño de la imagen de compilación personalizada.

Causa posible: AWS CodeBuild no tiene permiso para extraer la imagen de compilación de su Amazon Elastic Container Registry (Amazon ECR).

Solución recomendada: actualice los permisos de su repositorio en Amazon ECR para que CodeBuild pueda incorporar su imagen de compilación personalizada al entorno de compilación. Para obtener más información, consulte Ejemplo de Amazon ECR.

Causa posible: la imagen de Amazon ECR que has solicitado no está disponible en la AWS región que utiliza tu AWS cuenta.

Solución recomendada: utilice una imagen de Amazon ECR que esté en la misma AWS región que la que utiliza su AWS cuenta.

Causa posible: está utilizando un registro privado en una VPC que no tiene acceso público a Internet. CodeBuild no puede extraer una imagen de una dirección IP privada en una VPC. Para obtener más información, consulte Registro privado con AWS Secrets Manager una muestra para CodeBuild.

Solución recomendada: si utiliza un registro privado de una VPC, asegúrese de que la VPC tiene acceso público a Internet.

Causa posible: si el mensaje de error contiene "toomanyrequests" y la imagen se obtiene de Docker Hub, este error significa que se ha alcanzado el límite de recuperación de Docker Hub.

Solución recomendada: utilice un registro privado de Docker Hub u obtenga la imagen de Amazon ECR. Para obtener más información acerca del uso de un registro privado, consulte Registro privado con AWS Secrets Manager una muestra para CodeBuild. Para obtener más información sobre cómo usar Amazon ECR, consulte Ejemplo de Amazon ECR para CodeBuild .

Error: «Se encontró que el contenedor de compilación estaba inactivo antes de completar la compilación. El contenedor de compilación murió porque no tenía memoria suficiente o la imagen de Docker no es compatible. ErrorCode: 500"

Problema: cuando intenta utilizar un contenedor de Microsoft Windows o Linux AWS CodeBuild, este error se produce durante la fase de APROVISIONAMIENTO.

Causas posibles:

  • La versión del sistema operativo del contenedor no es compatible CodeBuild con.

  • Se ha especificado HTTP_PROXY, HTTPS_PROXY o ambos en el contenedor.

Soluciones recomendadas:

  • En Microsoft Windows, utilice un contenedor de Windows con un sistema operativo de contenedor que tenga la versión microsoft/windowsservercore:10.0.x. Por ejemplo, microsoft/windowsservercore:10.0.14393.2125.

  • En Linux, desactive las opciones HTTPS_PROXY y HTTP_PROXY en la imagen de Docker o especifique la configuración de la VPC del proyecto de compilación.

Error: "Cannot connect to the Docker daemon" (No se puede conectar al demonio de Docker) al ejecutar una compilación

Problema: se ha producido un error en la compilación y aparece un error similar a Cannot connect to the Docker daemon at unix:/var/run/docker.sock. Is the docker daemon running? en el registro de la compilación.

Causa posible: no ha ejecutado la compilación en un modo con privilegios.

Solución recomendada: para corregir este error, debes habilitar el modo privilegiado y actualizar tu especificación de compilación siguiendo las siguientes instrucciones.

Para ejecutar la compilación en modo privilegiado, sigue estos pasos:

  1. Abre la CodeBuild consola en https://console.aws.amazon.com/codebuild/.

  2. En el panel de navegación, selecciona Crear proyectos y, a continuación, elige tu proyecto de compilación.

  3. En Edit (Editar), seleccione Environment (Entorno).

  4. Elija Configuración adicional.

  5. En Privilegiado, selecciona Activar este indicador si quieres crear imágenes de Docker o si deseas que tus compilaciones obtengan privilegios elevados. .

  6. Seleccione Update environment (Actualizar entorno).

  7. Seleccione Start build (Comenzar compilación) para volver a intentar crear la compilación.

También tendrás que iniciar el daemon de Docker dentro de tu contenedor. La install fase de tu especificación de compilación podría tener un aspecto similar a este.

phases: install: commands: - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"

Para obtener más información acerca del controlador de almacenamiento de OverlayFS al que se hace referencia en el archivo buildspec, consulte Use the OverlayFS storage driver en el sitio web de Docker.

nota

Si el sistema operativo base es Alpine Linux, en el buildspec.yml añada el argumento -t a timeout:

- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"

Para obtener más información sobre cómo crear y ejecutar una imagen de Docker mediante el uso, consulte. AWS CodeBuildEjemplo de imagen personalizada de Docker para CodeBuild

Error: "no CodeBuild está autorizado a ejecutar: sts:AssumeRole" al crear o actualizar un proyecto de compilación

Problema: cuando intenta crear o actualizar un proyecto de compilación, aparece el error Code:InvalidInputException, Message:CodeBuild is not authorized to perform: sts:AssumeRole on arn:aws:iam::account-ID:role/service-role-name.

Causas posibles:

  • El AWS Security Token Service (AWS STS) se ha desactivado para la AWS región en la que está intentando crear o actualizar el proyecto de construcción.

  • El rol de AWS CodeBuild servicio asociado al proyecto de construcción no existe o no tiene permisos suficientes en los que confiar CodeBuild.

Soluciones recomendadas:

  • Asegúrese de que AWS STS esté activado en la AWS región en la que está intentando crear o actualizar el proyecto de compilación. Para obtener más información, consulte Activación y desactivación AWS STS en una AWS región en la Guía del usuario de IAM.

  • Asegúrese de que el rol de CodeBuild servicio de destino existe en su cuenta. AWS Si no utiliza la consola, asegúrese de que no haya escrito incorrectamente el nombre de recurso de Amazon (ARN) del rol de servicio cuando creó o actualizó el proyecto de compilación.

  • Asegúrese de que el rol CodeBuild de servicio de destino tenga permisos suficientes en los que confiar CodeBuild. Para obtener más información, consulte la instrucción de relación de confianza de políticas en Crear un rol de servicio de CodeBuild.

Error: «Error al llamar GetBucketAcl: el propietario del bucket ha cambiado o el rol de servicio ya no tiene permiso para llamar a s3:GetBucketAcl»

Problema: al ejecutar una compilación, recibe un error acerca de un cambio en la propiedad de un bucket de S3 y los permisos de GetBucketAcl.

Posible causa: ha añadido los permisos de s3:GetBucketAcl y s3:GetBucketLocation a su rol de IAM. Estos permisos protegen el bucket de S3 del proyecto y garantizan que solo usted tenga acceso a él. Después de agregar estos permisos, el propietario del bucket de S3 cambió.

Solución recomendada: compruebe que usted es el propietario del bucket de S3 y agregue de nuevo los permisos a su rol de IAM. Para obtener más información, consulte Acceso seguro a los buckets de S3.

Error: "Failed to upload artifacts: Invalid arn (Error al cargar artefactos: arn no válido)" al ejecutar una compilación

Problema: cuando ejecuta una compilación, se produce el siguiente error en la fase UPLOAD_ARTIFACTS de la compilación: Failed to upload artifacts: Invalid arn.

Causa posible: el depósito de salida de S3 (el depósito en el que se AWS CodeBuild almacena la salida de la compilación) se encuentra en una AWS región distinta a la del proyecto de CodeBuild compilación.

Solución recomendada: actualiza la configuración del proyecto de compilación para que apunte a un depósito de salida que esté en la misma AWS región que el proyecto de compilación.

Error: "Error de clon de Git: no es posible acceder a 'your-repository-URL': problema con el certificado de SSL: certificado autofirmado"

Problema: cuando intenta ejecutar un proyecto de compilación, se produce este error en la compilación.

Causa posible: el repositorio de código fuente tiene un certificado autofirmado, pero no ha elegido la opción de instalar el certificado desde el bucket de S3 durante el proyecto de compilación.

Soluciones recomendadas:

  • Edite el proyecto. En Certificate, elija Install certificate from S3. En Bucket of certificate, elija el bucket de S3 en el que esté almacenado el certificado SSL. En Object key of certificate (Clave de objeto del certificado), escriba el nombre de la clave de objeto de S3.

  • Edite el proyecto. Seleccione SSL inseguro para ignorar las advertencias de SSL al conectarse al repositorio de proyectos de GitHub Enterprise Server.

    nota

    Le recomendamos que utilice Insecure SSL únicamente para pruebas. No debe utilizarse en un entorno de producción.

Error: "The bucket you are attempting to access must be addressed using the specified endpoint (El bucket al que intenta obtener acceso debe direccionarse utilizando el punto de conexión especificado)" al ejecutar una compilación

Problema: cuando ejecuta una compilación, se produce el siguiente error en la fase DOWNLOAD_SOURCE de la compilación: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

Causa posible: el código fuente prediseñado está almacenado en un depósito de S3 y ese depósito se encuentra en una AWS región distinta a la del proyecto de AWS CodeBuild compilación.

Solución recomendada: actualice la configuración del proyecto de compilación para que apunte a un bucket que contenga el código fuente precompilado. Asegúrese de que el depósito esté en la misma AWS región que el proyecto de compilación.

Error: "Esta imagen de compilación requiere seleccionar al menos una versión de tiempo de ejecución".

Problema: cuando ejecuta una compilación, se produce el siguiente error en la fase DOWNLOAD_SOURCE de la compilación: YAML_FILE_ERROR: This build image requires selecting at least one runtime version.

Causa posible: la compilación utiliza la versión 1.0 o posterior de la imagen estándar de Amazon Linux 2 (AL2) o la versión 2.0 o posterior de la imagen estándar de Ubuntu y no se especifica un runtime en el archivo buildspec.

Solución recomendada: si utilizas la imagen aws/codebuild/standard:2.0 CodeBuild gestionada, debes especificar una versión en tiempo de ejecución en la runtime-versions sección del archivo buildspec. Por ejemplo, puede usar el siguiente archivo buildspec para un proyecto que usa PHP:

version: 0.2 phases: install: runtime-versions: php: 7.3 build: commands: - php --version artifacts: files: - README.md
nota

Si se especifica una sección de runtime-versions y se utiliza una imagen distinta de Ubuntu Standard Image 2.0 o posterior, o la imagen estándar de Amazon Linux 2 (AL2) 1.0 o posterior, la compilación mostrará la advertencia "Skipping install of runtimes. Runtime version selection is not supported by this build image".

Para obtener más información, consulte Specify runtime versions in the buildspec file.

Error: aparecer el error "QUEUED: INSUFFICIENT_SUBNET" cuando se produce un error en una compilación de una cola de compilaciones

Problema: una compilación de una cola de compilaciones produce un error similar a QUEUED: INSUFFICIENT_SUBNET.

Causas posibles: el bloque de CIDR de IPv4 especificado para su VPC utiliza una dirección IP reservada. Las cuatro primeras direcciones IP y la última dirección IP de cada bloque de CIDR de las subredes no se pueden utilizar y no se pueden asignar a ninguna instancia. Por ejemplo, en una subred con el bloque de CIDR 10.0.0.0/24, estarán reservadas las cinco direcciones IP siguientes:

  • 10.0.0.0:: dirección de red.

  • 10.0.0.1: Reservado AWS por el router de VPC.

  • 10.0.0.2: Reservado por AWS. La dirección IP del servidor DNS es siempre la base del intervalo de red VPC más dos; sin embargo, también se reserva la base de cada intervalo de subred más dos. En el caso de las VPC con varios bloques de CIDR, la dirección IP del servidor DNS se encuentra en el CIDR principal. Para obtener más información, consulte Servidor DNS de Amazon en la Guía del usuario de Amazon VPC.

  • 10.0.0.3: Reservado AWS para uso futuro.

  • 10.0.0.255: dirección de difusión de red. No admitimos la difusión en las VPC. Esta dirección está reservada.

Soluciones recomendadas: compruebe si su VPC utiliza una dirección IP reservada. Reemplace las direcciones IP reservadas por otras que no estén reservadas. Para obtener más información, consulte Tamaño de subred y VPC en la Guía del usuario de Amazon VPC.

Error: «No se pudo descargar la caché RequestError: se produjo un error en el envío de la solicitud debido a: x509: no se pudieron cargar las raíces del sistema y no se proporcionaron las raíces»

Problema: cuando intenta ejecutar un proyecto de compilación, se produce este error en la compilación.

Causa posible: ha configurado el almacenamiento en caché como parte del proyecto de compilación y está usando una imagen de Docker antigua que incluye un certificado raíz caducado.

Solución recomendada: actualice la imagen de Docker que se está utilizando en su proyecto AWS CodeBuild . Para obtener más información, consulte Imágenes de Docker proporcionadas por CodeBuild.

Error: «No se puede descargar el certificado de S3. AccessDenied»

Problema: cuando intenta ejecutar un proyecto de compilación, se produce este error en la compilación.

Causas posibles:

  • Ha elegido el bucket de S3 erróneo para el certificado.

  • Ha introducido la clave de objeto errónea para el certificado.

Soluciones recomendadas:

  • Edite el proyecto. En Bucket of certificate, elija el bucket de S3 en el que esté almacenado el certificado SSL.

  • Edite el proyecto. En Object key of certificate (Clave de objeto del certificado), escriba el nombre de la clave de objeto de S3.

Error: "Unable to locate credentials" (No se encuentran credenciales)

Problema: cuando intentas ejecutar AWS CLI, usar un AWS SDK o llamar a otro componente similar como parte de una compilación, aparecen errores de compilación que están directamente relacionados con el AWS CLI AWS SDK o el componente. Por ejemplo, puede obtener un error de compilación como Unable to locate credentials.

Causas posibles:

  • La versión del AWS CLI AWS SDK o del componente del entorno de compilación no es compatible con AWS CodeBuild.

  • Estás ejecutando un contenedor de Docker en un entorno de compilación que usa Docker y el contenedor no tiene acceso a las AWS credenciales de forma predeterminada.

Soluciones recomendadas:

  • Asegúrate de que tu entorno de compilación tenga la siguiente versión o una versión superior del AWS CLI AWS SDK o del componente.

    • AWS CLI: 1.10.47

    • AWS SDK para C++: 0.2.19

    • AWS SDK para Go: 1.2.5

    • AWS SDK para Java: 1.11.16

    • AWS SDK para: JavaScript 2.4.7

    • AWS SDK para PHP: 3.18.28

    • AWS SDK para Python (Boto3): 1.4.0

    • AWS SDK para Ruby: 2.3.22

    • Botocore: 1.4.37

    • CoreCLR: 3.2.6-beta

    • Node.js: 2.4.7

  • Si necesitas ejecutar un contenedor de Docker en un entorno de compilación y el contenedor requiere AWS credenciales, debes pasar las credenciales del entorno de compilación al contenedor. En el archivo buildspec, incluya un comando run de Docker como el siguiente. En este ejemplo se utiliza el comando aws s3 ls para mostrar los buckets de S3 disponibles. La -e opción pasa por las variables de entorno necesarias para que tu contenedor acceda a AWS las credenciales.

    docker run -e AWS_DEFAULT_REGION -e AWS_CONTAINER_CREDENTIALS_RELATIVE_URI your-image-tag aws s3 ls
  • Si está creando una imagen de Docker y la compilación requiere AWS credenciales (por ejemplo, para descargar un archivo de Amazon S3), debe pasar las credenciales del entorno de compilación al proceso de compilación de Docker de la siguiente manera.

    1. En el Dockerfile del código fuente para la imagen de Docker, especifique las siguientes instrucciones ARG.

      ARG AWS_DEFAULT_REGION ARG AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
    2. En el archivo buildspec, incluya un comando build de Docker como el siguiente. Las --build-arg opciones establecen las variables de entorno necesarias para que el proceso de compilación de Docker acceda a las credenciales. AWS

      docker build --build-arg AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION --build-arg AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI -t your-image-tag .

RequestError error de tiempo de espera cuando se ejecuta CodeBuild en un servidor proxy

Problema: recibe un error RequestError similar a uno de los siguientes:

  • RequestError: send request failed caused by: Post https://logs.<your-region>.amazonaws.com/: dial tcp 52.46.158.105:443: i/o timeoutde los CloudWatch registros.

  • Error uploading artifacts: RequestError: send request failed caused by: Put https://your-bucket.s3.your-aws-region.amazonaws.com/*: dial tcp 52.219.96.208:443: connect: connection refused de Amazon S3.

Causas posibles:

  • ssl-bump no está configurado correctamente.

  • La política de seguridad de la organización no permite utilizar ssl_bump.

  • El archivo buildspec no tiene una configuración de proxy especificada con un elemento proxy.

Soluciones recomendadas:

  • Asegúrese de que ssl-bump esté configurado correctamente. Si utiliza Squid con el servidor proxy, consulte Configuración de Squid como un servidor proxy explícito.

  • Siga estos pasos para usar puntos de enlace privados para Amazon S3 y CloudWatch Logs:

    1. En la tabla de ruteo de la subred privada, quite la regla que añadió y que dirige el tráfico destinado a Internet al servidor proxy. Para obtener más información, consulte Creación de una subred en su VPC en la Guía del usuario de Amazon VPC.

    2. Cree un punto de conexión privado de Amazon S3 y un punto de enlace de CloudWatch Logs y asócielo a la subred privada de su Amazon VPC. Para obtener más información, consulte Puntos de conexión de VPC en la Guía del usuario de Amazon VPC.

    3. Compruebe que la opción Habilitar nombre de DNS privado de la AMazon VPC esté seleccionada. Para más información, consulte Creación de un punto de conexión de interfaz en la Guía del usuario de Amazon VPC.

  • Si no utiliza ssl-bump para un servidor de proxy explícito, añada una configuración de proxy al archivo buildspec con un elemento proxy. Para obtener más información, consulte Ejecución de CodeBuild en un servidor proxy explícito y Sintaxis de buildspec.

    version: 0.2 proxy: upload-artifacts: yes logs: yes phases: build: commands:

El shell de Bourne (sh) debe existir en las imágenes de compilación

Problema: está utilizando una imagen de compilación que no ha sido proporcionada por AWS CodeBuild y sus compilaciones fallan y aparece el mensaje. Build container found dead before completing the build

Causa posible: la consola Bourne (sh) no está incluida en la imagen de compilación. CodeBuild necesita sh ejecutar comandos y scripts de compilación.

Solución recomendada: si sh no está presente en la imagen de compilación, asegúrese de incluirlo antes de iniciar nuevas compilaciones que usen la imagen. (CodeBuild ya incluye sh en sus imágenes de compilación).

Advertencia: "Skipping install of runtimes. runtime version selection is not supported by this build image" (Si se omite la instalación de los entornos de ejecución, no se podrá seleccionar la versión del entorno de ejecución en esta imagen de compilación) al ejecutar una compilación

Problema: cuando ejecuta una compilación, el registro de compilación contiene esta advertencia.

Causa posible: la compilación no utiliza la versión 1.0 o posterior de la imagen estándar de Amazon Linux 2 (AL2) o la versión 2.0 o posterior de la imagen estándar de Ubuntu y se especifica un entorno de tiempo de ejecución en una sección runtime-versions del archivo de especificación de compilación.

Solución recomendada: asegúrese de que el archivo buildspec no contenga una sección runtime-versions. La sección runtime-versions solo es necesaria si se utiliza la imagen estándar de Amazon Linux 2 (AL2) o posterior o la versión 2.0 o posterior de la imagen estándar de Ubuntu.

Error: «No se puede verificar JobWorker la identidad» al abrir la CodeBuild consola

Problema: al abrir la CodeBuild consola, aparece el mensaje de error «No se puede verificar la JobWorker identidad».

Causa posible: el rol de IAM que se utiliza para acceder a la consola tiene una etiqueta con jobId como clave. Esta clave de etiqueta está reservada CodeBuild y, si está presente, provocará este error.

Solución recomendada: cambie las etiquetas de rol de IAM personalizadas que tengan la clave jobId por otra clave, por ejemplo jobIdentifier.

No se ha podido iniciar la compilación

Problema: al iniciar una compilación, se muestra un mensaje de error que indica que No se ha podido iniciar la compilación.

Causa posible: se ha alcanzado el número de compilaciones simultáneas.

Soluciones recomendadas: espere a que se completen otras compilaciones o aumente el límite de compilaciones simultáneas del proyecto y vuelva a iniciar la compilación. Para obtener más información, consulte Configuración del proyecto.

Acceder a GitHub los metadatos en compilaciones almacenadas en caché local

Problema: en algunos casos, el directorio .git de una compilación en caché es un archivo de texto y no un directorio.

Causas posibles: cuando el almacenamiento en caché de fuentes locales está habilitado para una compilación, CodeBuild crea un gitlink para el directorio. .git Esto significa que el directorio de .git es realmente un archivo de texto que contiene la ruta hasta el directorio.

Soluciones recomendadas: en todos los casos, utilice el siguiente comando para obtener el directorio de metadatos de Git. Este comando funcionará independientemente del formato de .git:

git rev-parse --git-dir

AccessDenied: El propietario del bucket del grupo de informes no coincide con el propietario del bucket de S3...

Problema: al cargar datos de prueba en un bucket de Amazon S3, CodeBuild no puede escribir los datos de prueba en el bucket.

Causas posibles:

  • El propietario del bucket del grupo de informes no coincide con el propietario del bucket de Amazon S3.

  • El rol de servicio no tiene acceso de escritura en el bucket.

Soluciones recomendadas:

  • Cambie el propietario del bucket del grupo de informes para que coincida con el propietario del bucket de Amazon S3.

  • Modifique el rol de servicio para permitir el acceso de escritura al bucket de Amazon S3.