Solución de problemas de 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 monitorizar compilaciones de CodeBuild para solucionar problemas, consulte Registro y monitorización.
Temas
- Apache Maven crea artefactos de referencia en un repositorio incorrecto
- De forma predeterminada, los comandos de compilación se ejecutan como usuario raíz
- Las 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 EC2
- No 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 fuentes
- No 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 recientes
- Error: "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: "Build container found dead before completing the build. build container died because it was out of memory, or the Docker image is not supported (Se ha detectado que el contenedor de compilaciones está inactivo antes de completar la compilación. El contenedor se desactivó porque no quedaba memoria 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ón
- Error: "CodeBuld no tiene autorización para ejecutar: sts:AssumeRole" al crear o actualizar un proyecto de compilación
- Error: "Error calling GetBucketAcl: either the bucket owner has changed or the service role no longer has permission to called s3:GetBucketAcl" (Error al llamar a 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ón
- Error: "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ón
- Error: "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 compilaciones
- Error: "No se puede descargar la caché: RequestError: error al enviar la solicitud causado por x509: error al cargar las raíces del sistema, no se proporcionaron raíces"
- Error: "Unable to download certificate from S3. AccessDenied"
- Error: "Unable to locate credentials" (No se encuentran credenciales)
- Error de tiempo de espera agotado de RequestError al ejecutar CodeBuld en un servidor proxy
- El shell de Bourne (sh) debe existir en las 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
- Error: "No se puede verificar la identidad de JobWorker" al abrir la consola de CodeBuild
- No se ha podido iniciar la compilación
- Acceso a los metadatos de GitHub en compilaciones almacenadas en caché local
- AccessDenied: el propietario del bucket del grupo de informes no coincide con el propietario del bucket de S3...
Apache Maven crea artefactos de referencia en un repositorio incorrecto
Problema: cuando se usa Maven con un entorno de compilación de Java proporcionado por AWS CodeBuild, Maven obtiene las dependencias de la compilación y los complementos del repositorio central seguro de Maven que se encuentra en https://repo1.maven.org/maven2pom.xml
del proyecto de compilación declare explícitamente otras ubicaciones para usar en su lugar.
Causa posible: los entornos de compilación de Java proporcionados por CodeBuild contienen un archivo llamado settings.xml
que está preinstalado en el directorio /root/.m2
del entorno de compilación. 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:
-
Añada un archivo
settings.xml
al código fuente. -
En este archivo
settings.xml
, use el formato desettings.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. -
En la fase
install
del proyecto de compilación, indique a CodeBuild que copie el archivosettings.xml
en el directorio/root/.m2
del entorno de compilación. Por ejemplo, considere el siguiente fragmento de un archivobuildspec.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 los comandos de compilación como usuario raíz. 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 raíz.
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 la configuración regional predeterminada establecida en POSIX
. La configuración de localización de POSIX
es menos compatible con CodeBuild y los nombres de archivo que contienen caracteres ajenos al inglés, lo que puede hacer que se produzcan errores al compilar.
Solución recomendada: añada los siguientes comandos a la sección pre_build
del archivo buildspec. Estos comandos permiten que el entorno de compilación use US English UTF-8 para sus ajustes de localización, que es más compatible con CodeBuild y con los nombres de archivo que contienen caracteres que no están en inglés de Estados Unidos.
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 que el proyecto de compilación utiliza no tiene permiso para llamar a la acción ssm:GetParameters
o el proyecto de compilación usa un rol de servicio generado por AWS CodeBuild y permite llamar a la acción ssm:GetParameters
, pero los parámetros tienen nombres que no comienzan por /CodeBuild/
.
Soluciones recomendadas:
-
Si CodeBuild no ha generado el rol de servicio, actualice la definición para permitir que CodeBuild llame a la acción
ssm:GetParameters
. Por ejemplo, la siguiente instrucción de política permite llamar a la acciónssm: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 CodeBuild ha generado el rol de servicio, actualice su definición para permitir que CodeBuild tenga acceso a los parámetros del almacén de parámetros de Amazon EC2 con nombres que no comiencen por
/CodeBuild/
. Por ejemplo, la siguiente instrucción de política permite llamar a la acciónssm: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 del filtro de ramificaciones no está disponible en la consola al crear o actualizar un proyecto de AWS CodeBuild.
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/
. Por ejemplo, si la expresión regular del filtro de ramificaciones era branchName
$^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 Filtrar eventos de webhooks en GitHub (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: habilite Notificar estado de compilación al crear o actualizar un proyecto de CodeBuild. Esta opción indica a CodeBuild que le informe del estado al activar 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: después de permitir la notificación del estado de la compilación a un proveedor de fuentes, como GitHub o Bitbucket, no se actualiza el estado de la compilación.
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á utilizando una región de AWS que no es compatible con 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
. -
El rol de servicio que se va a usar en CodeBuild no tiene los permisos
s3:GetObject
ys3:PutObject
para el bucket de S3 en el que se aloja la 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
. 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.REPOSITORY
:TAG
-
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 Amazon Elastic Container Registry (Amazon ECR).
-
Solución recomendada: actualice los permisos del repositorio de Amazon ECR para que CodeBuild pueda extraer la imagen de compilación personalizada en el entorno de compilación. Para obtener más información, consulte Ejemplo de Amazon ECR.
- Causa posible: la imagen de Amazon ECR que ha solicitado no está disponible en la región AWS que utiliza su cuenta de AWS.
-
Solución recomendada: utilice una imagen de Amazon ECR que se encuentre en la misma región de AWS que la que se está utilizando en la cuenta de AWS.
- 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 muestra de AWS Secrets Manager 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 muestra de AWS Secrets Manager para CodeBuild. Para obtener más información sobre cómo usar Amazon ECR, consulte Ejemplo de Amazon ECR para CodeBuild .
Error: "Build container found dead before completing the build. build container died because it was out of memory, or the Docker image is not supported (Se ha detectado que el contenedor de compilaciones está inactivo antes de completar la compilación. El contenedor se desactivó porque no quedaba memoria o la imagen de Docker no es compatible). ErrorCode: 500"
Error: al intentar utilizar un contenedor de Microsoft Windows o Linux en AWS CodeBuild, se produce un error durante la fase PROVISIONING.
Causas posibles:
-
La versión de OS del contenedor no es compatible con CodeBuld.
-
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
yHTTP_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, debe habilitar el modo privilegiado y actualizar la especificación de compilación de acuerdo con las siguientes instrucciones.
Siga estos pasos para ejecutar la compilación en modo privilegiado:
-
Abra la consola de CodeBuild en https://console.aws.amazon.com/codebuild/
. -
En el panel de navegación, elija Proyectos de compilación y, a continuación, elija el proyecto de compilación.
-
En Edit (Editar), seleccione Environment (Entorno).
-
Elija Configuración adicional.
-
En Privilegiado, seleccione Habilite esta marca si desea compilar imágenes de Docker o desea que sus compilaciones obtengan privilegios elevados.
-
Seleccione Update environment (Actualizar entorno).
-
Seleccione Start build (Comenzar compilación) para volver a intentar crear la compilación.
También tendrá que iniciar el daemon de Docker dentro de su contenedor. La fase install
de la especificación de compilación puede ser similar a la siguiente.
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
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 compilar y ejecutar una imagen de Docker mediante AWS CodeBuild, consulte Ejemplo de Docker en una imagen personalizada de CodeBuild.
Error: "CodeBuld no tiene autorización para 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:
-
AWS Security Token Service (AWS STS) se ha desactivado para la región de AWS en la que intenta crear o actualizar el proyecto de compilación.
-
El rol de servicio de AWS CodeBuild asociado al proyecto de compilación no existe o no tiene permisos suficientes para confiar en CodeBuld.
Soluciones recomendadas:
-
Asegúrese de que AWS STS está activado para la región de AWS en la que intenta crear o actualizar el proyecto de compilación. Para obtener más información, consulte Activación y desactivación de AWS STS en una región de AWS en la Guía del usuario de IAM.
-
Asegúrese de que el rol de servicio de CodeBuld de destino existe en su cuenta de 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 de servicio de CodeBuld tiene permisos suficientes para confiar en CodeBuld. Para obtener más información, consulte la instrucción de relación de confianza de políticas en Cómo permitir que CodeBuild interactúe con otros servicios de AWS.
Error: "Error calling GetBucketAcl: either the bucket owner has changed or the service role no longer has permission to called s3:GetBucketAcl" (Error al llamar a 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 bucket de salida de S3 (el bucket donde AWS CodeBuild almacena el resultado de la compilación) está en una región de AWS distinta a la del proyecto de compilación de CodeBuld.
Solución recomendada: actualice la configuración del proyecto de compilación de manera que apunte a un bucket que esté en la misma región de AWS 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 Insecure SSL para omitir las advertencias de SSL al conectarse al repositorio del proyecto 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 precompilado está almacenado en un bucket de S3 y ese bucket está en una región de AWS distinta a la del proyecto de compilación de AWS CodeBuild.
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 bucket se encuentra en la misma región de AWS 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 utiliza la imagen aws/codebuild/standard:2.0
administrada por CodeBuld, debe especificar una versión de entorno en tiempo de ejecución en la sección runtime-versions
del archivo de especificación de compilación. 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
: reservada por AWS para el router de la VPC. -
10.0.0.2
: reservada 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
: reservada por AWS para futura utilización. -
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 puede descargar la caché: RequestError: error al enviar la solicitud causado por x509: error al cargar las raíces del sistema, no se proporcionaron 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 utiliza en el proyecto de AWS CodeBuild. Para obtener más información, consulte Imágenes de Docker proporcionadas por CodeBuild.
Error: "Unable to download certificate from 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: al intentar ejecutar la AWS CLI, utilizar un SDK de AWS o llamar a otro componente similar como parte de una compilación, pueden surgir errores de compilación relacionados directamente con la AWS CLI, el SDK de AWS o el componente. Por ejemplo, puede obtener un error de compilación como Unable to locate credentials
.
Causas posibles:
-
La versión de la AWS CLI, el SDK de AWS o el componente del entorno de compilación no son compatibles con AWS CodeBuild.
-
Está ejecutando un contenedor Docker en un entorno de compilación que usa Docker y, de forma predeterminada, ese contenedor no tiene acceso a la credenciales de AWS.
Soluciones recomendadas:
-
Asegúrese de que el entorno de compilación tenga la siguiente versión o una versión superior de la AWS CLI, el SDK de AWS o el componente.
-
AWS CLI: 1.10.47
-
AWS SDK for C++: 0.2.19
-
AWS SDK for Go: 1.2.5
-
AWS SDK for Java: 1.11.16
-
AWS SDK for JavaScript: 2.4.7
-
AWS SDK for PHP: 3.18.28
-
AWS SDK for Python (Boto3): 1.4.0
-
AWS SDK for Ruby: 2.3.22
-
Botocore: 1.4.37
-
CoreCLR: 3.2.6-beta
-
Node.js: 2.4.7
-
-
Si necesita ejecutar un contenedor Docker en un entorno de compilación y dicho contenedor necesita credenciales de AWS, debe 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 comandoaws s3 ls
para mostrar los buckets de S3 disponibles. La opción-e
se pasa a través de las variables de entorno para que el contenedor tenga acceso a las credenciales de AWS.docker run -e AWS_DEFAULT_REGION -e AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
your-image-tag
aws s3 ls -
Si va a compilar una imagen de Docker y la compilación requiere credenciales de AWS (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.
-
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
-
En el archivo buildspec, incluya un comando
build
de Docker como el siguiente. Las opciones de--build-arg
establecen las variables de entorno necesarias para que el proceso de compilación de Docker tenga acceso a las credenciales de 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
.
-
Error de tiempo de espera agotado de RequestError al ejecutar CodeBuld 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 timeout
de Registros de CloudWatch. -
Error uploading artifacts: RequestError: send request failed caused by: Put https://
de Amazon S3.your-bucket
.s3.your-aws-region
.amazonaws.com/*: dial tcp 52.219.96.208:443: connect: connection refused
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 conexión privados para Amazon S3 y Registros de CloudWatch:
-
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.
-
Cree un punto de conexión de Amazon S3 privado y un punto de conexión de Registros de CloudWatch y asócielos con la subred privada de su VPC de Amazon. Para obtener más información, consulte Puntos de conexión de VPC en la Guía del usuario de Amazon VPC.
-
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 elementoproxy
. 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 la ha proporcionado AWS CodeBuild y se produce el error siguiente en las compilaciones: Build container found
dead before completing the build
.
Causa posible: el intérprete de comandos Bourne (sh
) no está incluido en la imagen de compilación. CodeBuld necesita sh
para 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 la identidad de JobWorker" al abrir la consola de CodeBuild
Problema: Al abrir la consola de CodeBuild, aparece el mensaje de error "No se puede verificar la identidad de JobWorker".
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 para CodeBuild y provoca este error si está presente.
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.
Acceso a los metadatos de GitHub 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á activado 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 a 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.