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.
Avant de pouvoir déployer une AWS Cloud Development Kit (AWS CDK) pile, celle-ci doit d'abord être synthétisée. La synthèse de pile est le processus de production d'un AWS CloudFormation modèle et d'artefacts de déploiement à partir d'une pile CDK. Le modèle et les artefacts sont connus sous le nom d'assemblage cloud. L'assemblage du cloud est ce qui est déployé pour provisionner vos ressources AWS. Pour plus d'informations sur le fonctionnement des déploiements, consultezComment fonctionnent les AWS CDK déploiements.
Comment la synthèse et le bootstrapping fonctionnent ensemble
Pour que vos applications CDK soient correctement déployées, les CloudFormation modèles produits lors de la synthèse doivent spécifier correctement les ressources créées lors du démarrage. Par conséquent, le bootstrap et la synthèse doivent se compléter pour qu'un déploiement soit réussi :
-
Le bootstrapping est un processus ponctuel de configuration d'un AWS environnement pour AWS CDK les déploiements. Il configure les AWS ressources spécifiques de votre environnement qui sont utilisées par le CDK pour les déploiements. Ces ressources sont communément appelées ressources bootstrap. Pour obtenir des instructions sur le bootstrap, voir. Démarrez votre environnement pour l'utiliser avec AWS CDK
-
CloudFormation les modèles produits lors de la synthèse incluent des informations sur les ressources bootstrap à utiliser. Au cours de la synthèse, le CDK CLI ne sait pas précisément comment votre AWS environnement a été amorcé. Au lieu de cela, le CDK CLI produit des CloudFormation modèles basés sur le synthétiseur que vous configurez pour chaque pile CDK. Pour qu'un déploiement soit réussi, le synthétiseur doit produire des CloudFormation modèles qui font référence aux bonnes ressources bootstrap à utiliser.
Le CDK est livré avec un synthétiseur par défaut et une configuration d'amorçage conçus pour fonctionner ensemble. Si vous personnalisez l'un, vous devez appliquer les personnalisations pertinentes à l'autre.
Comment configurer la synthèse de piles CDK
Vous configurez la synthèse de pile CDK à l'aide de la synthesizer
propriété de votre Stack
instance. Cette propriété indique comment vos piles CDK seront synthétisées. Vous fournissez une instance d'une classe qui implémente IStackSynthesizer
ouIReusableStackSynthesizer
. Ses méthodes seront invoquées chaque fois qu'un actif est ajouté à la pile ou lorsque la pile est synthétisée. Voici un exemple de base de l'utilisation de cette propriété dans votre pile :
new MyStack(this, 'MyStack', {
// stack properties
synthesizer: new DefaultStackSynthesizer({
// synthesizer properties
}),
});
Vous pouvez également configurer un synthétiseur pour toutes les piles CDK de votre application CDK à l'aide de la defaultStackSynthesizer
propriété de votre instance : App
import { App, Stack, DefaultStackSynthesizer } from 'aws-cdk-lib';
const app = new App({
// Configure for all stacks in this app
defaultStackSynthesizer: new DefaultStackSynthesizer({
/* ... */
}),
});
Par défaut, les AWS CDK utilisationsDefaultStackSynthesizer
. Si vous ne configurez pas de synthétiseur, celui-ci sera utilisé.
Si vous ne modifiez pas le bootstrap, par exemple en apportant des modifications à la pile ou au modèle de bootstrap, vous n'avez pas à modifier la synthèse de pile. Vous n'avez même pas besoin de fournir un synthétiseur. Le CDK utilisera la DefaultStackSynthesizer
classe par défaut pour configurer la synthèse de pile CDK afin d'interagir correctement avec votre pile de bootstrap.
Comment synthétiser une pile de CDK
Pour synthétiser une pile CDK, utilisez l'interface de ligne de AWS CDK commande (AWS CDK CLI) cdk synth
commande. Pour plus d'informations sur cette commande, y compris les options que vous pouvez utiliser avec cette commande, consultezcdk synthesize.
Si votre application CDK contient une seule pile, ou si vous souhaitez synthétiser toutes les piles, vous n'avez pas besoin de fournir le nom de la pile CDK comme argument. Par défaut, le CDK CLI synthétisera vos piles de CDK dans des modèles. AWS CloudFormation
Un modèle json
formaté pour chaque pile est enregistré cdk.out
dans le répertoire. Si votre application contient une seule pile, un modèle yaml
formaté est imprimé sur. stdout
Voici un exemple :
$
cdk synth
Resources: CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:H4sIAAAAAAAA/unique-identifier
Metadata: aws:cdk:path: CdkAppStack/CDKMetadata/Default Condition: CDKMetadataAvailable...
Si votre application CDK contient plusieurs piles, vous pouvez fournir l'ID logique d'une pile pour synthétiser une seule pile. Voici un exemple :
$
cdk synth
MyStackName
Si vous ne synthétisez pas une pile et ne l'exécutez pascdk deploy
, le CDK CLI synthétisera automatiquement votre stack avant le déploiement.
Comment fonctionne la synthèse par défaut
Logique générée IDs dans votre AWS CloudFormation modèle
Lorsque vous synthétisez une pile CDK pour produire un CloudFormation modèle, des logiques IDs sont générées à partir des sources suivantes, formatées comme suit : <construct-path><construct-ID><unique-hash>
-
Chemin de construction : le chemin complet menant à la construction dans votre application CDK. Ce chemin exclut l'ID de la construction L1, qui est toujours
Resource
ouDefault
, et l'ID de la pile de niveau supérieur dont elle fait partie. -
ID de construction — L'ID que vous fournissez comme deuxième argument lors de l'instanciation de votre construction.
-
Hachage unique — AWS CDK Génère un hachage unique à 8 caractères à l'aide d'un algorithme de hachage déterministe. Ce hachage unique permet de garantir que les valeurs d'identification logiques de votre modèle sont uniques les unes par rapport aux autres. Le comportement déterministe de cette génération de hachage garantit que la valeur d'identifiant logique générée pour chaque construction reste la même à chaque fois que vous effectuez une synthèse. La valeur de hachage ne changera que si vous modifiez des valeurs de construction spécifiques telles que l'ID de votre construction ou son chemin.
IDs Les logiques ont une longueur maximale de 255 caractères. Par conséquent, le chemin de construction et l'ID de construction AWS CDK seront tronqués si nécessaire pour respecter cette limite.
Voici un exemple de construction qui définit un compartiment Amazon Simple Storage Service (Amazon S3). Ici, nous passons myBucket
comme identifiant pour notre construction :
import * as cdk from 'aws-cdk-lib';
import { Construct} from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
export class MyCdkAppStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Define the S3 bucket
new s3.Bucket(this, 'myBucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
}
}
Lorsque nous exécutonscdk synth
, un identifiant logique au format de myBucket
est généré. Voici un exemple de cette ressource dans le AWS CloudFormation modèle généré :unique-hash
Resources:
myBucket5AF9C99B:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
UpdateReplacePolicy: Delete
DeletionPolicy: Delete
Metadata:
aws:cdk:path: S3BucketAppStack/myBucket/Resource
Voici un exemple de construction personnalisée nommée Bar
qui définit un compartiment Amazon S3. La Bar
construction inclut la construction personnalisée Foo
dans son chemin :
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
// Define the Bar construct
export class Bar extends Construct {
constructor(scope: Construct, id: string) {
super(scope, id);
// Define an S3 bucket inside of Bar
new s3.Bucket(this, 'Bucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
} );
}
}
// Define the Foo construct
export class Foo extends Construct {
constructor(scope: Construct, id: string) {
super(scope, id);
// Create an instance of Bar inside Foo
new Bar(this, 'Bar');
}
}
// Define the CDK stack
export class MyCustomAppStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Instantiate Foo construct in the stack
new Foo(this, 'Foo');
}
}
Lorsque nous exécutonscdk synth
, un identifiant logique au format de FooBarBucket
est généré. Voici un exemple de cette ressource dans le AWS CloudFormation modèle généré :unique-hash
Resources:
FooBarBucketBA3ED1FA:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
UpdateReplacePolicy: Delete
DeletionPolicy: Delete
# ...
Personnalisez la synthèse de la pile CDK
Si le comportement de synthèse CDK par défaut ne répond pas à vos besoins, vous pouvez personnaliser la synthèse CDK. Pour ce faire, vous devez modifierDefaultStackSynthesizer
, utiliser d'autres synthétiseurs intégrés disponibles ou créer votre propre synthétiseur. Pour obtenir des instructions, consultez Personnalisez la synthèse de la pile CDK.