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 de Amazon EC2 Parameter StoreNo se puede acceder al filtro de sucursales de la CodeBuild consola 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éError: "BUILD_ CONTAINER _ UNABLE _TO_ PULL _IMAGE" al usar una imagen de compilación personalizada Error: «Se encontró un contenedor de compilación 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: «Falló el clon de Git: no se pudo acceder'your-repository-URL': problema de SSL certificado: 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: "QUEUED: INSUFFICIENT _SUBNET" cuando se produce un error en una compilación de una cola de compilaciónError: «No se pudo descargar la memoria caché RequestError: no se pudo enviar 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 el inglés estadounidense UTF -8 para la configuración de localización, lo que es más compatible con CodeBuild los nombres de archivo que no sean 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 de Amazon EC2 Parameter Store

Problema: cuando una compilación intenta obtener el valor de uno o más parámetros almacenados en Amazon EC2 Parameter Store, la compilación falla en la DOWNLOAD_SOURCE fase en la que se produce el errorParameter 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 de Amazon EC2 Parameter Store 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 acceder al filtro de sucursales de la CodeBuild consola

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 un mayor control sobre los eventos de webhook que desencadenan una nueva integración. 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 CodeBuild que hay que informar del estado al activar una compilación. Para obtener más información, consulte reportBuildStatusla AWS CodeBuild APIReferencia.

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 invalidó recientemente a través de InvalidateProjectCacheAPI.

  • La función de servicio que utiliza CodeBuild no tiene s3:GetObject s3:PutObject permisos para el 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.

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 (AmazonECR).

Solución recomendada: actualiza los permisos de tu repositorio en Amazon ECR para que CodeBuild puedas incorporar tu imagen de compilación personalizada al entorno de compilación. Para obtener más información, consulte ECRMuestra de Amazon.

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

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

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

Solución recomendada: si utiliza un registro privado en unVPC, asegúrese de que VPC tenga 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 atracción de Docker Hub.

Solución recomendada: utilice un registro privado de Docker Hub u obtenga su imagen de AmazonECR. Para obtener más información acerca del uso de un registro privado, consulte Registro privado con AWS Secrets Manager muestra para CodeBuild. Para obtener más información sobre el uso de AmazonECR, consultaECRMuestra de Amazon para CodeBuild .

Error: «Se encontró un contenedor de compilación 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 PROVISIONING fase.

Causas posibles:

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

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

Soluciones recomendadas:

  • Para Microsoft Windows, utilice un contenedor de Windows con un sistema operativo contenedor que sea la microsoft/windowsservercore:10.0.x (for example, microsoft/windowsservercore versión:10.0.14393.2125).

  • En el caso de Linux, borra la HTTPS_PROXY configuración HTTP_PROXY y de la imagen de Docker o especifica la configuración en el proyecto de compilación. VPC

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 CodeBuildDocker en una muestra de imagen personalizada 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 IAM usuario.

  • Asegúrese de que el rol CodeBuild de servicio de destino existe en su AWS cuenta. Si no utilizas la consola, asegúrate de no haber escrito mal el nombre del recurso de Amazon (ARN) del rol de servicio cuando creaste o actualizaste el proyecto de compilación.

  • Asegúrese de que el rol CodeBuild de servicio de destino tenga permisos suficientes para confiar CodeBuild. Para obtener más información, consulte la instrucción de relación de confianza de políticas en CodeBuild Permiten interactuar con otros AWS servicios.

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.

Causa posible: agregaste los s3:GetBucketLocation permisos s3:GetBucketAcl y a tu IAM rol. 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 es propietario del bucket de S3 y, a continuación, vuelva a añadir permisos a su IAM función. 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 el resultado 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: «Falló el clon de Git: no se pudo acceder'your-repository-URL': problema de SSL certificado: 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 Grupo de certificados, elija el depósito de S3 en el que está almacenado el SSL certificado. En Object key of certificate (Clave de objeto del certificado), escriba el nombre de la clave de objeto de S3.

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

    nota

    Le recomendamos que utilice Insecure únicamente SSL para realizar 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: su compilación usa 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 tiempo de ejecución en el archivo buildspec.

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

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

Si especifica una runtime-versions sección y utiliza una imagen distinta de Ubuntu Standard Image 2.0 o posterior, o la imagen estándar 1.0 o posterior de Amazon Linux 2 (AL2), 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: "QUEUED: INSUFFICIENT _SUBNET" cuando se produce un error en una compilación de una cola de compilación

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

Causas posibles: el IPv4 CIDR bloque especificado para usted VPC utiliza una dirección IP reservada. Las cuatro primeras direcciones IP y la última dirección IP de cada CIDR bloque de subred no están disponibles para su uso y no se pueden asignar a una instancia. Por ejemplo, en una subred con CIDR bloque10.0.0.0/24, se reservan las cinco direcciones IP siguientes:

  • 10.0.0.0:: dirección de red.

  • 10.0.0.1: Reservado AWS por el VPC router.

  • 10.0.0.2: Reservado por AWS. La dirección IP del DNS servidor es siempre la base del rango de VPC redes más dos; sin embargo, también reservamos la base de cada rango de subredes más dos. En el VPCs caso de CIDR bloques múltiples, la dirección IP del DNS servidor se encuentra en el principalCIDR. Para obtener más información, consulta Amazon DNS server en la Guía del VPC usuario de Amazon.

  • 10.0.0.3: Reservado AWS para uso futuro.

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

Soluciones recomendadas: compruebe si 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, consulta VPC el artículo sobre el tamaño de las subredes en la Guía VPCdel usuario de Amazon.

Error: «No se pudo descargar la memoria caché RequestError: no se pudo enviar 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 se almacena el SSL certificado.

  • 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 componente similar o llamar a otro componente similar como parte de una compilación, se producen errores de compilación que están directamente relacionados con el AWS CLI componente o el componente. AWS SDK 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 componente del entorno de compilación es incompatible 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 superior del componente AWS CLI AWS SDK, o.

    • AWS CLI: 1.10.47

    • AWS SDKpara C++: 0.2.19

    • AWS SDKpara Go: 1.2.5

    • AWS SDKpara Java: 1.11.16

    • AWS SDKpara JavaScript: 2.4.7

    • AWS SDKparaPHP: 3.18.28

    • AWS SDKpara Python (Boto3): 1.4.0

    • AWS SDKpara Ruby: 2.3.22

    • Botocore: 1.4.37

    • NúcleoCLR: 3.2.6 beta

    • Node.js: 2.4.7

  • Si necesitas ejecutar un contenedor 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, consulta Cómo crear una subred VPC en tu Guía del VPC usuario de Amazon.

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

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

  • 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 Se ejecuta 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ás utilizando una imagen de compilación que no ha sido proporcionada por AWS CodeBuild y tus compilaciones fallan y aparece el mensajeBuild 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: su compilación no usa la versión 1.0 o posterior de la imagen estándar de Amazon Linux 2 (AL2), ni la versión 2.0 o posterior de la imagen estándar de Ubuntu, y se especifica un tiempo de ejecución en una runtime-versions sección del archivo buildspec.

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

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 IAM rol que se usa para acceder a la consola tiene una etiqueta jobId como clave. Esta clave de etiqueta está reservada CodeBuild y, si está presente, provocará este error.

Solución recomendada: cambie las etiquetas de IAM rol personalizadas que tengan la clave jobId por una clave diferente, por ejemplojobIdentifier.

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.