Constructions de couche 1 - AWS Directives prescriptives

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.

Constructions de couche 1

Les constructions L1 sont les éléments constitutifs du AWS CDK et se distinguent facilement des autres constructions par le préfixe. Cfn Par exemple, le package Amazon DynamoDB contenu dans AWS CDK le contient Table une construction, qui est une construction L2. La construction L1 correspondante est appeléeCfnTable, et elle représente directement un CloudFormation Table DynamoDB. Il est impossible d'utiliser le AWS CDK sans accéder à cette première couche, bien qu'une AWS CDK application n'utilise généralement jamais directement une construction L1. Cependant, dans la majorité des cas, les constructions L2 et L3 que les développeurs ont l'habitude d'utiliser reposent largement sur les constructions L1. Vous pouvez donc considérer les constructions L1 comme le pont entre CloudFormation et le. AWS CDK

Le seul but du AWS CDK est de générer des CloudFormation modèles en utilisant des langages de codage standard. Une fois que vous avez exécuté la CLI commande cdk synth et que les CloudFormation modèles obtenus ont été générés, le travail AWS CDK est terminé. La commande cdk deploy n'est là que pour des raisons pratiques, mais ce que vous faites lorsque vous exécutez cette commande se produit entièrement à l'intérieur CloudFormation. La pièce du puzzle qui traduit le AWS CDK code dans un format CloudFormation compréhensible est la construction L1.

Le AWS CDK— CloudFormation cycle de vie des constructions L1

Le processus de création et d'utilisation des constructions L1 comprend les étapes suivantes :

  1. Le processus de AWS CDK construction convertit les CloudFormation spécifications en code programmatique sous la forme de constructions L1.

  2. Les développeurs écrivent du code qui fait directement ou indirectement référence à des constructions L1 dans le cadre d'une AWS CDK application.

  3. Les développeurs exécutent la commande cdk synth pour reconvertir le code programmatique dans le format dicté par les CloudFormation spécifications (modèles).

  4. Les développeurs exécutent la commande cdk deploy pour déployer les CloudFormation piles de ces modèles dans des environnements de AWS comptes.

Faisons un petit exercice. Accédez au référentiel AWS CDK open source activé GitHub, sélectionnez un AWS service aléatoire, puis accédez au AWS CDK package correspondant à ce service (situé dans le dossierpackages,aws-cdk-lib,aws-<servicename>,lib). Pour cet exemple, choisissons Amazon S3, mais cela fonctionne pour n'importe quel service. Si vous regardez le fichier index.ts principal de ce package, vous verrez une ligne qui se lit comme suit :

export * from './s3.generated';

Cependant, vous ne verrez le s3.generated fichier nulle part dans le répertoire correspondant. Cela est dû au fait que les constructions L1 sont générées automatiquement à partir de la spécification de la CloudFormation ressource pendant le AWS CDK processus de construction. Vous ne le verrez donc s3.generated dans le package qu'après avoir exécuté la commande de AWS CDK construction pour le package.

La spécification AWS CloudFormation de la ressource

La spécification AWS CloudFormation des ressources définit l'infrastructure en tant que code (IAC) AWS et détermine comment le code contenu dans les CloudFormation modèles est converti en ressources dans un AWS compte. Cette spécification définit le JSONformat AWS des ressources au niveau de chaque région. Chaque ressource reçoit un nom de type de ressource unique qui suit le formatprovider::service::resource. Par exemple, le nom du type de ressource pour un compartiment Amazon S3 seraitAWS::S3::Bucket, et le nom du type de ressource pour un point d'accès Amazon S3 seraitAWS::S3::AccessPoint. Ces types de ressources peuvent être affichés dans un CloudFormation modèle en utilisant la syntaxe définie dans la spécification de la AWS CloudFormation ressource. Lorsque le processus de AWS CDK génération s'exécute, chaque type de ressource devient également une construction L1.

Par conséquent, chaque construction L1 est une image miroir programmatique de sa ressource correspondante CloudFormation . Chaque propriété que vous appliqueriez dans un CloudFormation modèle est disponible lorsque vous instanciez une construction L1, et chaque CloudFormation propriété requise est également requise comme argument lorsque vous instanciez la construction L1 correspondante. Le tableau suivant compare un compartiment S3 tel que représenté dans un CloudFormation modèle avec le même compartiment S3 défini comme une construction AWS CDK L1.

CloudFormation modèle

Construction L1

"amzns3demobucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": "amzn-s3-demo-bucket", "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "ServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }, "MetricsConfigurations": [ { "Id": "myConfig" } ], "OwnershipControls": { "Rules": [ { "ObjectOwnership": "BucketOwnerPreferred" } ] }, "PublicAccessBlockConfiguration": { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true }, "VersioningConfiguration": { "Status": "Enabled" } } }
new CfnBucket(this, "amzns3demobucket", { bucketName: "amzn-s3-demo-bucket", bucketEncryption: { serverSideEncryptionConfiguration: [ { serverSideEncryptionByDefault: { sseAlgorithm: "AES256" } } ] }, metricsConfigurations: [ { id: "myConfig" } ], ownershipControls: { rules: [ { objectOwnership: "BucketOwnerPreferred" } ] }, publicAccessBlockConfiguration: { blockPublicAcls: true, blockPublicPolicy: true, ignorePublicAcls: true, restrictPublicBuckets: true }, versioningConfiguration: { status: "Enabled" } });

Comme vous pouvez le constater, la construction L1 est la manifestation exacte dans le code de la CloudFormation ressource. Il n'y a pas de raccourcis ni de simplifications, de sorte que la quantité de texte standard à écrire est à peu près la même. Cependant, l'un des grands avantages de l'utilisation du AWS CDK est censé être qu'il permet d'éliminer une grande partie de cette syntaxe standard. CloudFormation Alors, comment cela se produit-il ? C'est là qu'intervient la construction L2.