Esta es la guía para AWS CDK desarrolladores de la versión 2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.
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.
Solucione los problemas más comunes al arrancar su entorno con el. AWS Cloud Development Kit (AWS CDK)
Para obtener una introducción al arranque, consulte AWS CDK arranque.
Para obtener instrucciones sobre el arranque, consulte Inicie su entorno para usarlo con AWS CDK.
Al arrancar con la plantilla predeterminada, aparece el error “CREATE_FAILED” para el bucket de Amazon S3
Al arrancar mediante la interfaz de línea de comandos (CDK) AWS CDK CLI) con cdk bootstrap
la plantilla de arranque predeterminada, recibirá el siguiente error:
CREATE_FAILED | AWS::S3::Bucket |
BucketName
already exists
Antes de solucionar el problema, asegúrese de utilizar la última versión del CDK CLI.
-
Para comprobar la versión, ejecute
cdk --version
. -
Para instalar la versión más reciente, ejecute
npm install -g aws-cdk
.
Tras instalar la versión más reciente, intente volver a arrancar el entorno. Si recibe el mismo error, continúe con la solución de problemas.
Causas habituales
Cuando arranca su entorno, AWS CDK genera recursos físicos IDs para sus recursos de arranque. Para obtener más información, consulte Recurso IDs creado durante el arranque.
A diferencia del resto de los recursos de arranque, los nombres del bucket de Amazon S3 son globales. Esto significa que el nombre de cada bucket debe ser único Cuentas de AWS Regiones de AWS en todos los aspectos de una partición. Para obtener más información, consulte Descripción general de los buckets en la Guía del usuario de Amazon S3. Por lo tanto, la causa más común de este error es que el ID físico generado como nombre del bucket ya existe en algún lugar en la partición. Puede estar en su cuenta o en otra cuenta.
El siguiente es un ejemplo de un nombre de bucket: cdk-hnb659fds-assets-012345678910-us-west-1
. Si bien es poco probable, dado que el calificador y el ID de cuenta forman parte del nombre, es posible que otra Cuenta de AWS utilice este nombre para un bucket de Amazon S3. Como los nombres de los buckets tienen un alcance global, no puede usarlos si los usa una cuenta diferente en la misma partición. Lo más probable es que haya un bucket con el mismo nombre en algún lugar de su cuenta. Puede estar en la región que intenta arrancar o en otra región.
Por lo general, la solución consiste en localizar este bucket en su cuenta y determinar qué hacer con él, o bien personalizar el proceso de arranque para crear recursos de arranque con un nombre diferente.
Resolución
En primer lugar, determine si existe un depósito con el mismo nombre en la suya Cuenta de AWS. Si utiliza una AWS identidad con permisos válidos para buscar buckets de Amazon S3 en su cuenta, puede hacerlo de las siguientes maneras:
-
Use el
aws s3 ls
comando AWS Command Line Interface (AWS CLI) para ver una lista de todos sus buckets. -
Busque los nombres de los buckets de cada región en su cuenta mediante la consola Amazon S3
.
Si existe un bucket con el mismo nombre, determine si está en uso. Si no se utiliza, considere la posibilidad de eliminar el bucket e intente arrancar el entorno de nuevo.
Si existe un bucket con el mismo nombre y no desea eliminarlo, determine si ya está asociado a una pila de arranque en la cuenta. Puede que tengas que comprobar en varias regiones. La región en el nombre del bucket de Amazon S3 no significa necesariamente que el bucket esté en esa región. Para comprobar si está asociada a la pila de arranque de CDKToolkit
, puede llevar a cabo una de las siguientes acciones para cada región:
-
Usa el AWS CLI
aws cloudformation describe-stack-resources --stack-name
comando para ver los recursos de tu pila de bootstrap y comprobar si el depósito aparece en la lista.CDKToolkit
--regionRegion
-
En la consola de AWS CloudFormation
, localice la pila de CDKToolkit
. A continuación, en la pestaña Recursos, compruebe si el bucket existe.
Si el bucket está asociado a una pila de arranque, determine si la pila de arranque se encuentra en la misma región en la que intenta arrancar. Si es así, su entorno ya está en fase de arranque y debería poder empezar a utilizar CDK para implementar aplicaciones en su entorno. Si el bucket de Amazon S3 está asociado a una pila de arranque en una región diferente, tendrá que decidir qué hacer. Las posibles soluciones incluyen cambiar el nombre del bucket de Amazon S3 existente, eliminar el bucket de Amazon S3 actual si no se utiliza o usar un nombre nuevo para el bucket de Amazon S3 que intenta crear.
Si no encuentra un bucket de Amazon S3 con el mismo nombre en su cuenta, es posible que esté en una cuenta distinta. Para resolver este problema, tendrá que personalizar el arranque para crear nuevos nombres para todos sus recursos de arranque o solo para su bucket de Amazon S3. Para crear nuevos nombres para todos los recursos de arranque, puede modificar el calificador. Para crear un nuevo nombre solo para el bucket de Amazon S3, puede proporcionar un nuevo nombre de bucket.
Para personalizar el arranque, puedes usar las opciones del CDK CLI cdk bootstrap
comando o modificando la plantilla de bootstrap. Para obtener instrucciones, consulte Personaliza el AWS CDK bootstrapping.
Si personaliza el arranque, tendrá que aplicar los mismos cambios a la síntesis antes de poder implementar una aplicación de forma correcta. Para obtener instrucciones, consulte Personalice la síntesis de pilas de CDK.
Por ejemplo, puede proporcionar un nuevo calificador con cdk bootstrap
:
$
cdk bootstrap --qualifier
abcde0123
A continuación, se muestra un ejemplo de un nombre de bucket de Amazon S3 que se creará con esta modificación: cdk-abcde0123-assets-012345678910-us-west-1
. Todos los recursos de arranque creados durante el proceso de arranque utilizarán este calificador.
Al desarrollar la aplicación CDK, debe especificar el calificador personalizado en el sintetizador. Esto ayuda al CDK a identificar sus recursos de arranque durante la síntesis y la implementación. A continuación, se muestra un ejemplo de personalización del sintetizador predeterminado para la instancia de pila:
new MyStack(this, 'MyStack', {
synthesizer: new DefaultStackSynthesizer({
qualifier: 'abcde0123',
}),
});
También, puede especificar el nuevo calificador en el archivo cdk.json
del proyecto de CDK:
{
"app": "...",
"context": {
"@aws-cdk/core:bootstrapQualifier": "abcde0123"
}
}
Para modificar únicamente el nombre del bucket de Amazon S3, puede utilizar la opción --bootstrap-bucket-name
. A continuación, se muestra un ejemplo:
$
cdk bootstrap --bootstrap-bucket-name
'my-new-bucket-name'
Al desarrollar la aplicación de CDK, debe especificar el nombre del nuevo bucket en el sintetizador. A continuación, se muestra un ejemplo de personalización del sintetizador predeterminado para la instancia de pila:
new MyStack(this, 'MyStack', {
synthesizer: new DefaultStackSynthesizer({
fileAssetsBucketName: 'my-new-bucket-name',
}),
});
Prevención
Le recomendamos que inicie de forma proactiva cada AWS entorno que vaya a utilizar. Para obtener más información, consulte Cuando arrancar su entorno. Específicamente para el problema de denominación de los buckets de Amazon S3, esto creará buckets de Amazon S3 en cada AWS entorno e impedirá que otros usen su nombre de bucket de Amazon S3.