Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Résolution des problèmes AWS CodeBuild
Utilisez les informations de cette rubrique pour identifier, diagnostiquer et résoudre des problèmes. Pour savoir comment enregistrer et surveiller les CodeBuild versions afin de résoudre les problèmes, consultezJournalisation et surveillance.
Rubriques
- Apache Maven génère des artefacts de référence à partir du mauvais répertoire
- Les commandes de génération s'exécutent en tant que racine par défaut
- Les builds peuvent échouer lorsque les noms de fichiers ne sont pas américains Caractères anglais
- Les builds peuvent échouer lors de l'obtention de paramètres depuis Amazon EC2 Parameter Store
- Impossible d'accéder au filtre de branche dans la CodeBuild console
- Impossible d'afficher la réussite ou l'échec de la génération
- L'état du build n'a pas été communiqué au fournisseur source
- Impossible de trouver et de sélectionner l'image de base de la plate-forme Windows Server Core 2019
- Les commandes antérieures des fichiers buildspec ne sont pas reconnues par les commandes ultérieures
- Erreur : accès refusé lors de la tentative de téléchargement du cache
- Erreur : « BUILD _ _ CONTAINER UNABLE _TO_ PULL _ IMAGE » lors de l'utilisation d'une image de construction personnalisée
- Erreur : « Le conteneur de construction a été trouvé mort avant de terminer la construction. Le conteneur de construction est mort parce qu'il n'y avait plus de mémoire ou parce que l'image Docker n'est pas prise en charge. ErrorCode: 500 pouces
- Erreur : « Cannot connect to the Docker daemon » lors de l'exécution d'une génération
- Erreur : « n'CodeBuild est pas autorisé à exécuter : sts : AssumeRole » lors de la création ou de la mise à jour d'un projet de construction
- Erreur : « Erreur lors de l'appel GetBucketAcl : soit le propriétaire du compartiment a changé, soit le rôle de service n'est plus autorisé à appeler s3 : GetBucketAcl »
- Erreur : « Failed to upload artifacts: Invalid arn » lors de l'exécution d'une génération
- Erreur : « Échec du clonage Git : accès impossible 'your-repository-URL' : problème de SSL certificat : certificat auto-signé »
- Erreur : « The bucket you are attempting to access must be addressed using the specified endpoint... » lors de l'exécution d'une génération
- Erreur : « This build image requires selecting at least one runtime version. »
- Erreur : « QUEUED : INSUFFICIENT _ SUBNET » en cas d'échec d'une compilation dans une file d'attente de génération
- Erreur : « Impossible de télécharger le cache RequestError : échec de l'envoi de la demande en raison de : x509 : échec du chargement des racines du système et aucune racine n'a été fournie »
- Erreur : « Impossible de télécharger le certificat depuis S3. AccessDenied»
- Erreur : « Unable to locate credentials »
- RequestError erreur de temporisation lors de l'exécution CodeBuild sur un serveur proxy
- Le shell bourne (sh) doit exister dans les images de génération
- Avertissement : « Skipping install of runtimes. runtime version selection is not supported by this build image » lors de l'exécution d'une génération
- Erreur : « Impossible de vérifier l' JobWorker identité » lors de l'ouverture de la CodeBuild console
- La construction n'a pas pu démarrer
- Accès aux GitHub métadonnées dans les versions mises en cache localement
- AccessDenied: Le propriétaire du compartiment pour le groupe de rapports ne correspond pas au propriétaire du compartiment S3...
Apache Maven génère des artefacts de référence à partir du mauvais répertoire
Problème : Lorsque vous utilisez Maven avec un environnement de génération Java AWS CodeBuild fourni, Maven extrait les dépendances des builds et des plugins depuis le référentiel central sécurisé de Maven à l'adresse https://repo1.maven.org/maven2.pom.xml
de votre projet de génération déclare explicitement d'autres emplacements à utiliser.
Cause possible : les environnements de génération Java CodeBuild fournis incluent un fichier nommé settings.xml
qui est préinstallé dans le répertoire de l'environnement de /root/.m2
construction. Ce fichier settings.xml
contient les déclarations suivantes qui demandent à Maven de toujours extraire les dépendances de génération et de plug-in du référentiel Maven central sécurisé situé à l'adresse 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>
Solution recommandée : effectuez les opérations suivantes :
-
Ajoutez un fichier
settings.xml
à votre code source. -
Dans ce fichier
settings.xml
, utilisez le format de fichiersettings.xml
précédent comme guide pour déclarer les référentiels desquels vous voulez que Maven extraie plutôt les dépendances de génération et de plug-in. -
Au cours de la
install
phase de votre projet de construction, demandez CodeBuild de copier votresettings.xml
fichier dans le/root/.m2
répertoire de l'environnement de construction. Par exemple, examinez l'extrait de code suivant d'un fichierbuildspec.yml
qui illustre ce comportement.version 0.2 phases: install: commands: - cp ./settings.xml /root/.m2/settings.xml
Les commandes de génération s'exécutent en tant que racine par défaut
Problème : AWS CodeBuild exécute vos commandes de compilation en tant qu'utilisateur root. Cela se produit même si votre Dockerfile d'image de génération associé définit l'instruction USER
sur un autre utilisateur.
Cause : Par défaut, CodeBuild exécute toutes les commandes de compilation en tant qu'utilisateur root.
Solution recommandée : aucune.
Les builds peuvent échouer lorsque les noms de fichiers ne sont pas américains Caractères anglais
Problème : lorsque vous exécutez une version qui utilise des fichiers dont les noms de fichiers contiennent des informations non américaines Caractères anglais (par exemple, caractères chinois), la compilation échoue.
Cause possible : les environnements de construction fournis par AWS CodeBuild ont leurs paramètres régionaux par défaut définis surPOSIX
. POSIX
les paramètres de localisation sont moins compatibles avec les noms de fichiers non américains CodeBuild et les noms de fichiers contenant des informations non américaines Caractères anglais et peuvent entraîner l'échec des versions associées.
Solution recommandée : ajoutez les commandes suivantes à la section pre_build
de votre fichier buildspec. Ces commandes font en sorte que l'environnement de construction utilise l'anglais américain UTF -8 pour ses paramètres de localisation, ce qui est plus compatible avec CodeBuild les noms de fichiers contenant des caractères non américains. Personnages en anglais
Pour les environnements de génération basés sur Ubuntu :
pre_build: commands: - export LC_ALL="en_US.UTF-8" - locale-gen en_US en_US.UTF-8 - dpkg-reconfigure locales
Pour les environnements de création basés sur Amazon Linux :
pre_build: commands: - export LC_ALL="en_US.utf8"
Les builds peuvent échouer lors de l'obtention de paramètres depuis Amazon EC2 Parameter Store
Problème : lorsqu'un build essaie d'obtenir la valeur d'un ou de plusieurs paramètres stockés dans Amazon EC2 Parameter Store, le build échoue pendant la DOWNLOAD_SOURCE
phase d'erreurParameter does not
exist
.
Cause possible : le rôle de service sur lequel repose le projet de génération n'est pas autorisé à appeler l'ssm:GetParameters
action ou le projet de génération utilise un rôle de service généré par AWS CodeBuild et permettant d'appeler l'ssm:GetParameters
action, mais les paramètres ont des noms qui ne commencent pas par/CodeBuild/
.
Solutions recommandées :
-
Si le rôle de service n'a pas été généré par CodeBuild, mettez à jour sa définition CodeBuild pour permettre d'appeler l'
ssm:GetParameters
action. Par exemple, la déclaration de stratégie suivante permet d'appeler l'actionssm:GetParameters
pour obtenir des paramètres avec des noms commençant par/CodeBuild/
:{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:
REGION_ID
:ACCOUNT_ID
:parameter/CodeBuild/*" } ] } -
Si le rôle de service a été généré par CodeBuild, mettez à jour sa définition pour autoriser l'accès CodeBuild aux paramètres d'Amazon EC2 Parameter Store avec des noms autres que ceux commençant par
/CodeBuild/
. Par exemple, la déclaration de stratégie suivante permet d'appeler l'actionssm:GetParameters
pour obtenir des paramètres avec le nom spécifié :{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:
REGION_ID
:ACCOUNT_ID
:parameter/PARAMETER_NAME
" } ] }
Impossible d'accéder au filtre de branche dans la CodeBuild console
Problème : L'option de filtre de branche n'est pas disponible dans la console lorsque vous créez ou mettez à jour un AWS CodeBuild projet.
Cause possible : l'option de filtre de branche est obsolète. Il a été remplacé par des groupes de filtres Webhook, qui permettent de mieux contrôler les événements Webhook qui déclenchent une nouvelle intégration. CodeBuild
Solution recommandée : pour migrer un filtre de branche créé avant l'introduction des filtres webhook, créez un groupes de filtres webhook avec un filtre HEAD_REF
avec l'expression régulière ^refs/heads/
. Par exemple, si votre expression régulière de filtre de branche était branchName
$^branchName$
, l'expression régulière mise à jour que vous placez dans le filtre HEAD_REF
est ^refs/heads/branchName$
. Pour plus d’informations, consultez Événements du webhook Bitbucket et Filtrer les événements du GitHub webhook (console).
Impossible d'afficher la réussite ou l'échec de la génération
Problème : vous ne pouvez pas consulter l'état de réussite ou d'échec lorqu'une génération a fait l'objet d'une nouvelle tentative.
Cause possible : l'option qui permet de signaler le statut de votre génération n'est pas activée.
Solutions recommandées : Activez le statut de génération du rapport lorsque vous créez ou mettez à jour un CodeBuild projet. Cette option indique CodeBuild de signaler l'état lorsque vous déclenchez une compilation. Pour plus d'informations, reportez-vous reportBuildStatusà la section AWS CodeBuild APIRéférence.
L'état du build n'a pas été communiqué au fournisseur source
Problème : Après avoir autorisé le signalement de l'état du build à un fournisseur source, tel que GitHub Bitbucket, le statut du build n'est pas mis à jour.
Cause possible : L'utilisateur associé au fournisseur de source n'a pas accès en écriture au dépôt.
Solutions recommandées : Pour pouvoir signaler l'état de construction au fournisseur de source, l'utilisateur associé au fournisseur de source doit avoir un accès en écriture au dépôt. Si l'utilisateur ne dispose pas d'un accès en écriture, l'état de construction ne peut pas être mis à jour. Pour de plus amples informations, veuillez consulter Accès au fournisseur de source.
Impossible de trouver et de sélectionner l'image de base de la plate-forme Windows Server Core 2019
Problème : Impossible de trouver ou de sélectionner l'image de base de la plateforme Windows Server Core 2019.
Cause possible : vous utilisez une AWS région qui ne prend pas en charge cette image.
Solutions recommandées : utilisez l'une des AWS régions suivantes où l'image de base de la plateforme Windows Server Core 2019 est prise en charge :
-
USA Est (Virginie du Nord)
-
USA Est (Ohio)
-
USA Ouest (Oregon)
-
Europe (Irlande)
Les commandes antérieures des fichiers buildspec ne sont pas reconnues par les commandes ultérieures
Problème : les résultats d'une ou plusieurs commandes dans votre fichier buildspec ne sont pas reconnus par des commandes ultérieures dans le même fichier buildspec. Par exemple, une commande peut définir une variable d'environnement local, mais une commande exécutée ultérieurement ne parvient pas à obtenir la valeur de cette variable d'environnement local.
Cause possible : dans le fichier buildspec version 0.1, AWS CodeBuild exécute chaque commande dans une instance distincte du shell par défaut dans l'environnement de génération. Cela signifie que chaque commande s'exécute isolée de toutes les autres commandes. Par défaut, vous ne pouvez pas exécuter une commande unique qui s'appuie sur l'état de commandes précédentes.
Solutions recommandées : nous vous recommandons d'utiliser la version 0.2 de buildspec afin de résoudre ce problème. Si vous devez utiliser la version 0.1 de buildspec pour une raison quelconque, nous vous recommandons d'exploiter l'opérateur de chaînage de commande shell (par exemple, &&
dans Linux) pour combiner plusieurs commandes en une seule. Ou incluez dans votre code source un script shell contenant plusieurs commandes, puis appelez ce script shell à partir d'une commande unique dans le fichier buildspec. Pour plus d’informations, consultez Shells et commandes dans les environnements de génération et Variables d'environnement dans les environnements de génération.
Erreur : accès refusé lors de la tentative de téléchargement du cache
Problème : lors de la tentative de téléchargement du cache sur un projet de génération dont le cache est activé, vous recevez l'erreur Access denied
.
Causes possibles :
-
vous venez de configurer la mise en cache dans le cadre de votre projet de génération.
-
Le cache a récemment été invalidé via le
InvalidateProjectCache
API. -
Le rôle de service utilisé par CodeBuild ne dispose
s3:GetObject
d'aucunes3:PutObject
autorisation d'accès au compartiment S3 qui contient le cache.
Solution recommandée : pour la première utilisation, il est normal de voir cela immédiatement après la mise à jour de la configuration du cache. Si cette erreur persiste, vérifiez si le rôle de service a les autorisations s3:GetObject
et s3:PutObject
pour le compartiment S3 qui contient le cache. Pour plus d'informations, consultez Spécifier les autorisations S3 dans le manuel Amazon S3 Developer Guide.
Erreur : « BUILD _ _ CONTAINER UNABLE _TO_ PULL _ IMAGE » lors de l'utilisation d'une image de construction personnalisée
Problème : lorsque vous essayez d'exécuter une génération qui utilise une version de génération personnalisée, la génération échoue avec l'erreur BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE
.
- Cause possible : la taille globale non compressée de l'image de génération est supérieure à l'espace disque disponible du type de calcul de l'environnement de génération. Pour vérifier la taille de votre image de génération, utilisez Docker pour exécuter la commande
docker images
. Pour obtenir une liste de l'espace disque disponible par type de calcul, reportez-vous à la section Modes et types de calcul de l'environnement de création.REPOSITORY
:TAG
-
Solution recommandée : utilisez un type de calcul plus important avec plus d'espace disque disponible, ou réduisez la taille de votre image de construction personnalisée.
- Cause possible : AWS CodeBuild n'est pas autorisé à extraire l'image de construction de votre Amazon Elastic Container Registry (AmazonECR).
-
Solution recommandée : mettez à jour les autorisations de votre référentiel sur Amazon ECR afin de CodeBuild pouvoir intégrer votre image de construction personnalisée dans l'environnement de création. Pour plus d’informations, consultez le ECRÉchantillon Amazon.
- Cause possible : L'ECRimage Amazon que vous avez demandée n'est pas disponible dans la AWS région utilisée par votre AWS compte.
-
Solution recommandée : utilisez une ECR image Amazon située dans la même AWS région que celle utilisée par votre AWS compte.
- Cause possible : Vous utilisez un registre privé dans un pays VPC qui n'a pas d'accès public à Internet. CodeBuild Impossible d'extraire une image d'une adresse IP privée dans unVPC. Pour de plus amples informations, veuillez consulter Registre privé avec AWS Secrets Manager échantillon pour CodeBuild.
-
Solution recommandée : Si vous utilisez un registre privé dans unVPC, assurez-vous qu'il VPC dispose d'un accès public à Internet.
- Cause possible : si le message d'erreur contient « toomanyrequests«, et l'image est obtenue à partir de Docker Hub, cette erreur signifie que la limite d'attraction de Docker Hub a été atteinte.
-
Solution recommandée : utilisez un registre privé Docker Hub ou procurez-vous votre image auprès d'AmazonECR. Pour plus d'informations sur l'utilisation d'un registre privé, consultez Registre privé avec AWS Secrets Manager échantillon pour CodeBuild. Pour plus d'informations sur l'utilisation d'AmazonECR, consultezECRExemple Amazon pour CodeBuild .
Erreur : « Le conteneur de construction a été trouvé mort avant de terminer la construction. Le conteneur de construction est mort parce qu'il n'y avait plus de mémoire ou parce que l'image Docker n'est pas prise en charge. ErrorCode: 500 pouces
Problème : Lorsque vous essayez d'utiliser un conteneur Microsoft Windows ou Linux dans AWS CodeBuild, cette erreur se produit pendant la PROVISIONING phase.
Causes possibles :
-
La version du système d'exploitation du conteneur n'est pas prise en charge par CodeBuild.
-
HTTP_PROXY
,HTTPS_PROXY
, ou les deux sont spécifiés dans le conteneur.
Solutions recommandées :
-
Pour Microsoft Windows, utilisez un conteneur Windows avec un système d'exploitation de conteneur de version : microsoft/windowsservercore:10.0.x (for example, microsoft/windowsservercore 10.0.14393.2125).
-
Pour Linux, effacez les
HTTPS_PROXY
paramètresHTTP_PROXY
et de votre image Docker ou spécifiez la VPC configuration dans votre projet de compilation.
Erreur : « Cannot connect to the Docker daemon » lors de l'exécution d'une génération
Problème : la génération échoue et vous recevez une erreur similaire à Cannot connect to the Docker daemon
at unix:/var/run/docker.sock. Is the docker daemon running?
dans le journal de génération.
Cause possible : vous n’exécutez pas la génération en mode privilégié.
Solution recommandée : pour corriger cette erreur, vous devez activer le mode privilégié et mettre à jour votre buildspec en suivant les instructions suivantes.
Pour exécuter votre build en mode privilégié, procédez comme suit :
-
Ouvrez la CodeBuild console à l'adresse https://console.aws.amazon.com/codebuild/
. -
Dans le volet de navigation, choisissez Build projects, puis choisissez votre projet de build.
-
Dans Modifier, choisissez Environnement.
-
Sélectionnez Additional configuration (Configuration supplémentaire).
-
Dans Privileged, sélectionnez Activer cet indicateur si vous souhaitez créer des images Docker ou si vous souhaitez que vos builds bénéficient de privilèges élevés. .
-
Choisissez Mettre à jour l'environnement.
-
Choisissez Démarrer la génération pour réessayer de créer votre génération.
Vous devrez également démarrer le démon Docker à l'intérieur de votre conteneur. La install
phase de votre buildspec peut ressembler à ceci.
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"
Pour plus d'informations sur le pilote de stockage OverlayFS référencé dans le fichier buildspec, consultez Utilisation du pilote de stockage OverlayFS
Note
Si le système d'exploitation de base est Alpine Linux, dans buildspec.yml
ajoutez l'argument -t
à timeout
:
- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
Pour en savoir plus sur la création et l'exécution d'une image Docker à l'aide AWS CodeBuild de. Docker dans un exemple d'image personnalisé pour CodeBuild
Erreur : « n'CodeBuild est pas autorisé à exécuter : sts : AssumeRole » lors de la création ou de la mise à jour d'un projet de construction
Problème : lorsque vous essayez de créer ou de mettre à jour un projet de génération, vous recevez l'erreur Code:InvalidInputException,
Message:CodeBuild is not authorized to perform: sts:AssumeRole on
arn:aws:iam::
.account-ID
:role/service-role-name
Causes possibles :
-
Le AWS Security Token Service (AWS STS) a été désactivé pour la AWS région dans laquelle vous essayez de créer ou de mettre à jour le projet de construction.
-
Le rôle AWS CodeBuild de service associé au projet de construction n'existe pas ou ne dispose pas d'autorisations suffisantes pour être approuvé CodeBuild.
Solutions recommandées :
-
Assurez-vous qu' AWS STS il est activé pour la AWS région dans laquelle vous essayez de créer ou de mettre à jour le projet de construction. Pour plus d'informations, consultez la section Activation et désactivation AWS STS dans une AWS région dans le guide de l'IAMutilisateur.
-
Assurez-vous que le rôle CodeBuild de service cible existe dans votre AWS compte. Si vous n'utilisez pas la console, assurez-vous de ne pas avoir mal orthographié le nom de ressource Amazon (ARN) du rôle de service lorsque vous avez créé ou mis à jour le projet de génération.
-
Assurez-vous que le rôle de CodeBuild service cible dispose d'autorisations suffisantes pour être fiable CodeBuild. Pour plus d'informations, consultez la déclaration de stratégie de relation d'approbation dans CodeBuild Autoriser l'interaction avec d'autres AWS services.
Erreur : « Erreur lors de l'appel GetBucketAcl : soit le propriétaire du compartiment a changé, soit le rôle de service n'est plus autorisé à appeler s3 : GetBucketAcl »
Problème : lorsque vous exécutez une génération, vous recevez une erreur sur une modification de la propriété d'un compartiment S3 et d'autorisations GetBucketAcl
.
Cause possible : vous avez ajouté les s3:GetBucketLocation
autorisations s3:GetBucketAcl
et à votre IAM rôle. Ces autorisations protègent le compartiment S3 de votre projet et garantissent que vous seul pouvez y accéder. Après l'ajout de ces autorisations, le propriétaire du compartiment S3 a changé.
Solution recommandée : vérifiez que vous êtes propriétaire du compartiment S3, puis ajoutez de nouveau des autorisations à votre IAM rôle. Pour de plus amples informations, veuillez consulter Accès sécurisé aux compartiments S3.
Erreur : « Failed to upload artifacts: Invalid arn » lors de l'exécution d'une génération
Problème : lorsque vous exécutez une génération, la phase UPLOAD_ARTIFACTS
de la génération échoue avec l'erreur Failed to
upload artifacts: Invalid arn
.
Cause possible : votre compartiment de sortie S3 (le compartiment AWS CodeBuild dans lequel sont stockés les résultats de la génération) se trouve dans une AWS région différente de celle du projet de CodeBuild construction.
Solution recommandée : mettez à jour les paramètres du projet de génération pour qu'ils pointent vers un compartiment de sortie situé dans la même AWS région que le projet de construction.
Erreur : « Échec du clonage Git : accès impossible 'your-repository-URL'
: problème de SSL certificat : certificat auto-signé »
Problème : lorsque vous essayez d'exécuter un projet de génération, la génération échoue avec cette erreur.
Cause possible : Votre référentiel source possède un certificat auto-signé, mais vous n'avez pas choisi d'installer le certificat depuis votre compartiment S3 dans le cadre de votre projet de génération.
Solutions recommandées :
-
modifiez votre projet. Pour Certificat, choisissez Installer le certificat à partir de votre compartiment S3. Pour Bucket of certificate, choisissez le bucket S3 dans lequel votre SSL certificat est stocké. Pour Object key of certificate (Clé d'objet de certificat), tapez le nom de la clé d'objet S3.
-
modifiez votre projet. Sélectionnez Non sécurisé SSL pour ignorer les SSL avertissements lors de la connexion au référentiel de votre projet GitHub Enterprise Server.
Note
Nous vous recommandons d'utiliser Insecure uniquement SSL pour les tests. Cette option ne doit pas être utilisée dans un environnement de production.
Erreur : « The bucket you are attempting to access must be addressed using the specified endpoint... » lors de l'exécution d'une génération
Problème : lorsque vous exécutez une génération, la phase DOWNLOAD_SOURCE
de la génération échoue avec l'erreur The bucket you
are attempting to access must be addressed using the specified endpoint. Please send
all future requests to this endpoint
.
Cause possible : votre code source prédéfini est stocké dans un compartiment S3, et ce compartiment se trouve dans une AWS région différente de celle du projet de AWS CodeBuild génération.
Solution recommandée : mettez à jour les paramètres du projet de génération pour pointer vers un compartiment qui contient votre code source précompilé. Assurez-vous que le bucket se trouve dans la même AWS région que le projet de construction.
Erreur : « This build image requires selecting at least one runtime version. »
Problème : lorsque vous exécutez une génération, la phase DOWNLOAD_SOURCE
de la génération échoue avec l'erreur YAML_FILE_ERROR:
This build image requires selecting at least one runtime version
.
Cause possible : votre build utilise la version 1.0 ou ultérieure de l'image standard Amazon Linux 2 (AL2), ou la version 2.0 ou ultérieure de l'image standard Ubuntu, et aucun environnement d'exécution n'est spécifié dans le fichier buildspec.
Solution recommandée : Si vous utilisez l'image aws/codebuild/standard:2.0
CodeBuild gérée, vous devez spécifier une version d'exécution dans la runtime-versions
section du fichier buildspec. Par exemple, vous pouvez utiliser le fichier buildspec suivant pour un projet qui utilise : PHP
version: 0.2 phases: install: runtime-versions: php: 7.3 build: commands: - php --version artifacts: files: - README.md
Note
Si vous spécifiez une runtime-versions
section et utilisez une image autre qu'Ubuntu Standard Image 2.0 ou version ultérieure, ou l'image standard Amazon Linux 2 (AL2) 1.0 ou version ultérieure, le build émet l'avertissement « »Skipping install of runtimes. Runtime version selection is not supported by this build image
.
Pour de plus amples informations, veuillez consulter Specify runtime versions in the buildspec file.
Erreur : « QUEUED : INSUFFICIENT _ SUBNET » en cas d'échec d'une compilation dans une file d'attente de génération
Problème : une génération dans une file d'attente échoue avec une erreur similaire à QUEUED: INSUFFICIENT_SUBNET
.
Causes possibles : Le IPv4 CIDR blocage spécifié pour vous VPC utilise une adresse IP réservée. Les quatre premières adresses IP et la dernière adresse IP de chaque CIDR bloc de sous-réseau ne sont pas disponibles et ne peuvent pas être attribuées à une instance. Par exemple, dans un sous-réseau avec CIDR bloc10.0.0.0/24
, les cinq adresses IP suivantes sont réservées :
-
10.0.0.0:
: Adresse réseau. -
10.0.0.1
: Réservé par AWS pour le VPC routeur. -
10.0.0.2
: Réservé par AWS. L'adresse IP du DNS serveur est toujours la base de la plage VPC réseau plus deux ; toutefois, nous réservons également la base de chaque plage de sous-réseaux plus deux. Dans le VPCs cas de CIDR blocs multiples, l'adresse IP du DNS serveur est située dans le serveur principalCIDR. Pour plus d'informations, consultez le DNSserveur Amazon dans le guide de VPC l'utilisateur Amazon. -
10.0.0.3
: Réservé par AWS pour une utilisation future. -
10.0.0.255
: Adresse de diffusion réseau. Nous ne prenons pas en charge la diffusion dans unVPC. Cette adresse est réservée.
Solutions recommandées : Vérifiez si vous VPC utilisez une adresse IP réservée. Remplacez toute adresse IP réservée par une adresse non réservée. Pour plus d'informations, consultez la section relative au dimensionnement VPC des sous-réseaux dans le guide de VPCl'utilisateur Amazon.
Erreur : « Impossible de télécharger le cache RequestError : échec de l'envoi de la demande en raison de : x509 : échec du chargement des racines du système et aucune racine n'a été fournie »
Problème : lorsque vous essayez d'exécuter un projet de génération, la génération échoue avec cette erreur.
Cause possible : vous avez configuré la mise en cache dans le cadre de votre projet de génération et vous utilisez une ancienne image Docker qui inclut un certificat racine expiré.
Solution recommandée : mettez à jour l'image Docker utilisée dans votre AWS CodeBuild projet. Pour de plus amples informations, veuillez consulter Images Docker fournies par CodeBuild.
Erreur : « Impossible de télécharger le certificat depuis S3. AccessDenied»
Problème : lorsque vous essayez d'exécuter un projet de génération, la génération échoue avec cette erreur.
Causes possibles :
-
vous avez choisi le mauvais compartiment S3 pour votre certificat.
-
Vous avez entré la mauvaise clé d'objet pour votre certificat.
Solutions recommandées :
-
modifiez votre projet. Pour Bucket of certificate, choisissez le bucket S3 dans lequel votre SSL certificat est stocké.
-
modifiez votre projet. Pour Object key of certificate (Clé d'objet de certificat), tapez le nom de la clé d'objet S3.
Erreur : « Unable to locate credentials »
Problème : Lorsque vous essayez d'exécuter AWS CLI AWS
SDK, d'utiliser un ou d'appeler un autre composant similaire dans le cadre d'une génération, vous obtenez des erreurs de génération directement liées au AWS CLI composant ou. AWS SDK Par exemple, vous pouvez obtenir l'erreur de génération Unable to locate credentials
.
Causes possibles :
-
La version du AWS CLI AWS SDK, ou du composant dans l'environnement de construction est incompatible avec AWS CodeBuild.
-
Vous exécutez un conteneur Docker dans un environnement de génération qui utilise Docker, et le conteneur n'a pas accès aux AWS informations d'identification par défaut.
Solutions recommandées :
-
Assurez-vous que votre environnement de génération dispose de la version suivante ou supérieure du composant AWS CLI AWS SDK, ou.
-
AWS CLI : 1.10.47
-
AWS SDKpour C++ : 0.2.19
-
AWS SDKpour Go : 1.2.5
-
AWS SDKpour Java : 1.11.16
-
AWS SDKpour JavaScript : 2.4.7
-
AWS SDKpour PHP : 3.18.28
-
AWS SDKpour Python (Boto3) : 1.4.0
-
AWS SDKpour Ruby : 2.3.22
-
Botocore : 1.4.37
-
Noyau CLR : 3.2.6-beta
-
Node.js : 2.4.7
-
-
Si vous devez exécuter un conteneur Docker dans un environnement de génération et que le conteneur nécessite des AWS informations d'identification, vous devez transmettre les informations d'identification de l'environnement de génération au conteneur. Dans le fichier buildspec, incluez une commande Docker
run
telle que la suivante. Cet exemple utilise la commandeaws s3 ls
pour répertorier les compartiments S3 disponibles. L'-e
option passe par les variables d'environnement requises pour que votre conteneur puisse accéder aux AWS informations d'identification.docker run -e AWS_DEFAULT_REGION -e AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
your-image-tag
aws s3 ls -
Si vous créez une image Docker et que la compilation nécessite des AWS informations d'identification (par exemple, pour télécharger un fichier depuis Amazon S3), vous devez transmettre les informations d'identification de l'environnement de génération au processus de génération Docker comme suit.
-
Dans votre Dockerfile de code source pour l'image Docker, spécifiez les instructions
ARG
suivantes.ARG AWS_DEFAULT_REGION ARG AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-
Dans le fichier buildspec, incluez une commande Docker
build
telle que la suivante. Les--build-arg
options définissent les variables d'environnement requises pour que votre processus de création de Docker puisse accéder aux AWS informations d'identification.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 erreur de temporisation lors de l'exécution CodeBuild sur un serveur proxy
Problème : Vous recevez une erreur RequestError
similaire à l'une des erreurs suivantes :
-
RequestError: send request failed caused by: Post https://logs.<your-region>.amazonaws.com/: dial tcp 52.46.158.105:443: i/o timeout
de CloudWatch Logs. -
Error uploading artifacts: RequestError: send request failed caused by: Put https://
depuis Amazon S3.your-bucket
.s3.your-aws-region
.amazonaws.com/*: dial tcp 52.219.96.208:443: connect: connection refused
Causes possibles :
-
ssl-bump
n'est pas configuré correctement. -
La stratégie de sécurité de votre organisation ne vous permet pas d'utiliser
ssl_bump
. -
Votre fichier buildspec n'a pas de paramètres proxy spécifiés à l'aide d'un élément
proxy
.
Solutions recommandées :
-
assurez-vous que
ssl-bump
est configuré correctement. Si vous utilisez Squid pour votre serveur proxy, consultez Configuration de Squid en tant que serveur proxy explicite. -
Pour utiliser des points de terminaison privés pour Amazon S3 et CloudWatch Logs, procédez comme suit :
-
Dans la table de routage de votre sous-réseau privé, supprimez la règle que vous avez ajoutée qui achemine le trafic destiné à Internet vers votre serveur proxy. Pour plus d'informations, consultez la section Création d'un sous-réseau VPC dans votre manuel Amazon VPC User Guide.
-
Créez un point de terminaison Amazon S3 et un point de terminaison CloudWatch Logs privés et associez-les au sous-réseau privé de votre AmazonVPC. Pour plus d'informations, consultez les services de point de VPC terminaison dans le guide de VPC l'utilisateur Amazon.
-
Confirmez que l'option Activer le DNS nom privé sur votre Amazon VPC est sélectionnée. Pour plus d'informations, consultez la section Création d'un point de terminaison d'interface dans le guide de VPC l'utilisateur Amazon.
-
-
Si vous n'utilisez pas
ssl-bump
pour un serveur proxy explicite, ajoutez une configuration proxy à votre fichier buildspec à l'aide d'un élémentproxy
. Pour plus d’informations, consultez Exécuter CodeBuild sur un serveur proxy explicite et Syntaxe d'un fichier buildspec.version: 0.2 proxy: upload-artifacts: yes logs: yes phases: build: commands:
Le shell bourne (sh) doit exister dans les images de génération
Problème : vous utilisez une image de build qui n'est pas fournie par AWS CodeBuild, et vos builds échouent avec le messageBuild container found
dead before completing the build
.
Cause possible : Le shell Bourne (sh
) n'est pas inclus dans votre image de construction. CodeBuild doit sh
exécuter des commandes et des scripts de construction.
Solution recommandée : S'il sh
n'est pas présent dans votre image de construction, assurez-vous de l'inclure avant de commencer toute autre génération utilisant votre image. (inclut CodeBuild déjà des images sh
dans sa version.)
Avertissement : « Skipping install of runtimes. runtime version selection is not supported by this build image » lors de l'exécution d'une génération
Problème : lorsque vous exécutez une génération, le journal de génération contient cet avertissement.
Cause possible : votre build n'utilise pas la version 1.0 ou ultérieure de l'image standard Amazon Linux 2 (AL2), ni la version 2.0 ou ultérieure de l'image standard Ubuntu, et un environnement d'exécution est spécifié dans une runtime-versions
section de votre fichier buildspec.
Solution recommandée : vérifiez que votre fichier buildspec ne contient pas une section runtime-versions
. La runtime-versions
section n'est obligatoire que si vous utilisez l'image standard Amazon Linux 2 (AL2) ou version ultérieure ou l'image standard Ubuntu version 2.0 ou ultérieure.
Erreur : « Impossible de vérifier l' JobWorker identité » lors de l'ouverture de la CodeBuild console
Problème : Lorsque vous ouvrez la CodeBuild console, le message d'erreur « Impossible de vérifier l' JobWorker identité » s'affiche.
Cause possible : le IAM rôle utilisé pour accéder à la console possède une balise dont jobId
la clé est la clé. Cette clé de balise est réservée CodeBuild et provoquera cette erreur si elle est présente.
Solution recommandée : modifiez toutes les balises de IAM rôle personnalisées contenant la clé jobId
pour qu'elles aient une clé différente, telle quejobIdentifier
.
La construction n'a pas pu démarrer
Problème : Lorsque vous démarrez une compilation, vous recevez un message d'erreur indiquant que la compilation n'a pas pu démarrer.
Cause possible : le nombre de versions simultanées a été atteint.
Solutions recommandées : attendez que les autres versions soient terminées ou augmentez la limite de génération simultanée pour le projet, puis recommencez la génération. Pour de plus amples informations, veuillez consulter Configuration du projet.
Accès aux GitHub métadonnées dans les versions mises en cache localement
Problème : Dans certains cas, le répertoire .git d'une version mise en cache est un fichier texte et non un répertoire.
Causes possibles : lorsque la mise en cache des sources locales est activée pour une compilation, CodeBuild crée un gitlink pour le .git
répertoire. Cela signifie que le .git
répertoire est en fait un fichier texte contenant le chemin d'accès au répertoire.
Solutions recommandées : Dans tous les cas, utilisez la commande suivante pour obtenir le répertoire de métadonnées Git. Cette commande fonctionnera quel que soit le format de .git
:
git rev-parse --git-dir
AccessDenied: Le propriétaire du compartiment pour le groupe de rapports ne correspond pas au propriétaire du compartiment S3...
Problème : lors du téléchargement de données de test dans un compartiment Amazon S3, CodeBuild il est impossible d'écrire les données de test dans le compartiment.
Causes possibles :
-
Le compte spécifié pour le propriétaire du compartiment du groupe de rapports ne correspond pas au propriétaire du compartiment Amazon S3.
-
Le rôle de service ne dispose pas d'un accès en écriture au compartiment.
Solutions recommandées :
-
Modifiez le propriétaire du compartiment du groupe de rapports pour qu'il corresponde au propriétaire du compartiment Amazon S3.
-
Modifiez le rôle de service pour autoriser l'accès en écriture au compartiment Amazon S3.