Ceci est le guide du AWS CDK développeur de la version 2. L'ancien CDK v1 est entré en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.
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ésolvez les problèmes courants liés au démarrage de votre environnement avec le. AWS Cloud Development Kit (AWS CDK)
Pour une introduction au bootstrap, voir. AWS CDK bootstrap
Pour obtenir des instructions sur le bootstrap, voir. Démarrez votre environnement pour l'utiliser avec AWS CDK
Lors du démarrage à l'aide du modèle par défaut, vous obtenez une erreur « CREATE_FAILED » pour le compartiment Amazon S3
Lors du démarrage à l'aide de l'interface de ligne de AWS CDK commande (CDK) CLI) avec cdk bootstrap
le modèle de bootstrap par défaut, vous recevez le message d'erreur suivant :
CREATE_FAILED | AWS::S3::Bucket |
BucketName
already exists
Avant le dépannage, assurez-vous que vous utilisez la dernière version du CDK CLI.
-
Pour vérifier votre version, lancez
cdk --version
. -
Pour installer la dernière version, exécutez
npm install -g aws-cdk
.
Après avoir installé la dernière version, réessayez de démarrer votre environnement. Si le message d'erreur persiste, poursuivez le dépannage.
Causes courantes
Lorsque vous démarrez votre environnement, il AWS CDK génère des ressources physiques IDs pour votre bootstrap. Pour de plus amples informations, veuillez consulter Ressource IDs créée lors de l'amorçage.
Contrairement aux autres ressources bootstrap, les noms des compartiments Amazon S3 sont globaux. Cela signifie que le nom de chaque compartiment doit être unique Comptes AWS dans l'ensemble Régions AWS au sein d'une partition. Pour plus d'informations, consultez la présentation des buckets dans le guide de l'utilisateur Amazon S3. Par conséquent, la cause la plus courante de cette erreur est que l'identifiant physique généré sous le nom de votre bucket existe déjà quelque part dans la partition. Cela peut se trouver dans votre compte ou dans un autre compte.
Voici un exemple de nom de compartiment :cdk-hnb659fds-assets-012345678910-us-west-1
. Bien que cela soit peu probable, étant donné que le qualificatif et l'ID de compte font partie du nom, il est possible que le nom d'un compartiment Amazon S3 soit utilisé par un autre Compte AWS. Comme les noms de bucket ont une portée globale, vous ne pouvez pas les utiliser s'ils sont utilisés par un autre compte dans la même partition. Il est fort probable qu'un bucket portant le même nom existe quelque part dans votre compte. Cela peut se trouver dans la région que vous essayez de démarrer ou dans une autre région.
En général, la solution consiste à localiser ce compartiment dans votre compte et à déterminer ce qu'il faut en faire, ou à personnaliser le bootstrap pour créer des ressources d'amorçage portant un nom différent.
Résolution
Tout d'abord, déterminez si un bucket portant le même nom existe dans votre Compte AWS. En utilisant une AWS identité dotée d'autorisations valides pour rechercher des compartiments Amazon S3 dans votre compte, vous pouvez procéder de la manière suivante :
-
Utilisez la
aws s3 ls
commande AWS Command Line Interface (AWS CLI) pour afficher la liste de tous vos buckets. -
Recherchez les noms de compartiment pour chaque région de votre compte à l'aide de la console Amazon S3
.
S'il existe un bucket portant le même nom, déterminez s'il est utilisé. S'il n'est pas utilisé, pensez à supprimer le compartiment et à réessayer de démarrer votre environnement.
Si un bucket portant le même nom existe et que vous ne souhaitez pas le supprimer, déterminez s'il est déjà associé à une pile bootstrap dans votre compte. Il se peut que vous deviez vérifier plusieurs régions. La région dans le nom du compartiment Amazon S3 ne signifie pas nécessairement que le compartiment se trouve dans cette région. Pour vérifier s'il est associé à la pile CDKToolkit
bootstrap, vous pouvez effectuer l'une des opérations suivantes pour chaque région :
-
Utilisez la AWS CLI
aws cloudformation describe-stack-resources --stack-name
commande pour afficher les ressources de votre stack bootstrap et vérifier si le bucket est répertorié.CDKToolkit
--regionRegion
-
Dans la AWS CloudFormation console
, localisez la CDKToolkit
pile. Ensuite, dans l'onglet Ressources, vérifiez si le bucket existe.
Si le bucket est associé à une pile bootstrap, déterminez si la pile bootstrap se trouve dans la même région que celle dans laquelle vous essayez de démarrer. Si tel est le cas, votre environnement est déjà amorcé et vous devriez pouvoir commencer à utiliser le CDK pour déployer des applications dans votre environnement. Si le compartiment Amazon S3 est associé à une pile bootstrap dans une autre région, vous devez déterminer la marche à suivre. Les solutions possibles incluent le changement de nom du compartiment Amazon S3 existant, la suppression du compartiment Amazon S3 actuel s'il n'est pas utilisé ou l'utilisation d'un nouveau nom pour le compartiment Amazon S3 que vous essayez de créer.
Si vous ne parvenez pas à trouver un compartiment Amazon S3 portant le même nom dans votre compte, il se peut qu'il existe dans un autre compte. Pour résoudre ce problème, vous devez personnaliser le bootstrap afin de créer de nouveaux noms pour toutes vos ressources bootstrap ou uniquement pour votre compartiment Amazon S3. Pour créer de nouveaux noms pour toutes les ressources bootstrap, vous pouvez modifier le qualificatif. Pour créer un nouveau nom uniquement pour votre compartiment Amazon S3, vous pouvez fournir un nouveau nom de compartiment.
Pour personnaliser le bootstrap, vous pouvez utiliser les options du CDK CLI cdk bootstrap
commande ou en modifiant le modèle de bootstrap. Pour obtenir des instructions, consultez Personnaliser le AWS CDK bootstrap.
Si vous personnalisez le bootstrap, vous devrez appliquer les mêmes modifications à la synthèse avant de pouvoir déployer correctement une application. Pour obtenir des instructions, consultez Personnalisez la synthèse de la pile CDK.
Par exemple, vous pouvez fournir un nouveau qualificatif avec cdk bootstrap
:
$
cdk bootstrap --qualifier
abcde0123
Voici un exemple de nom de compartiment Amazon S3 qui sera créé avec cette modification :cdk-abcde0123-assets-012345678910-us-west-1
. Toutes les ressources bootstrap créées pendant le bootstrap utiliseront ce qualificatif.
Lorsque vous développez votre application CDK, vous devez spécifier votre qualificatif personnalisé dans votre synthétiseur. Cela aide le CDK à identifier vos ressources bootstrap lors de la synthèse et du déploiement. Voici un exemple de personnalisation du synthétiseur par défaut pour votre instance de stack :
new MyStack(this, 'MyStack', {
synthesizer: new DefaultStackSynthesizer({
qualifier: 'abcde0123',
}),
});
Vous pouvez également spécifier le nouveau qualificatif dans le cdk.json
fichier de votre projet CDK :
{
"app": "...",
"context": {
"@aws-cdk/core:bootstrapQualifier": "abcde0123"
}
}
Pour modifier uniquement le nom du compartiment Amazon S3, vous pouvez utiliser l'--bootstrap-bucket-name
option. Voici un exemple :
$
cdk bootstrap --bootstrap-bucket-name
'my-new-bucket-name'
Lorsque vous développez votre application CDK, vous devez spécifier le nom de votre nouveau bucket dans votre synthétiseur. Voici un exemple de personnalisation du synthétiseur par défaut pour votre instance de stack :
new MyStack(this, 'MyStack', {
synthesizer: new DefaultStackSynthesizer({
fileAssetsBucketName: 'my-new-bucket-name',
}),
});
Prévention
Nous vous recommandons de démarrer de manière proactive chaque AWS environnement que vous prévoyez d'utiliser. Pour de plus amples informations, veuillez consulter Quand démarrer votre environnement. Spécifiquement pour le problème de dénomination des compartiments Amazon S3, cela créera des compartiments Amazon S3 dans chaque AWS environnement et empêchera les autres d'utiliser le nom de votre compartiment Amazon S3.