Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Les identifiants et AWS CDK

Mode de mise au point
Les identifiants et AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

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.

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.

Lorsque vous créez AWS Cloud Development Kit (AWS CDK) des applications, vous utiliserez de nombreux types d'identifiants et de noms. Pour les utiliser AWS CDK efficacement et éviter les erreurs, il est important de comprendre les types d'identifiants.

Les identifiants doivent être uniques dans le cadre dans lequel ils ont été créés ; il n'est pas nécessaire qu'ils soient uniques au niveau mondial dans votre AWS CDK application.

Si vous tentez de créer un identifiant avec la même valeur dans la même portée, une AWS CDK exception est générée.

Construire IDs

L'identifiant le plus courant est l'identifiant passé comme deuxième argument lors de l'instanciation d'un objet de construction. id Cet identifiant, comme tous les identifiants, doit uniquement être unique dans le cadre dans lequel il a été créé, ce qui est le premier argument lors de l'instanciation d'un objet de construction.

Note

Le id d'une pile est également l'identifiant que vous utilisez pour y faire référence dans leAWS CDK CLI référence.

Regardons un exemple où nous avons deux constructions avec l'identifiant MyBucket dans notre application. Le premier est défini dans le périmètre de la pile avec l'identifiantStack1. Le second est défini dans le périmètre d'une pile avec l'identifiantStack2. Comme ils sont définis dans des étendues différentes, cela ne provoque aucun conflit et ils peuvent coexister dans la même application sans problème.

TypeScript
import { App, Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as s3 from 'aws-cdk-lib/aws-s3'; class MyStack extends Stack { constructor(scope: Construct, id: string, props: StackProps = {}) { super(scope, id, props); new s3.Bucket(this, 'MyBucket'); } } const app = new App(); new MyStack(app, 'Stack1'); new MyStack(app, 'Stack2');
JavaScript
const { App , Stack } = require('aws-cdk-lib'); const s3 = require('aws-cdk-lib/aws-s3'); class MyStack extends Stack { constructor(scope, id, props = {}) { super(scope, id, props); new s3.Bucket(this, 'MyBucket'); } } const app = new App(); new MyStack(app, 'Stack1'); new MyStack(app, 'Stack2');
Python
from aws_cdk import App, Construct, Stack, StackProps from constructs import Construct from aws_cdk import aws_s3 as s3 class MyStack(Stack): def __init__(self, scope: Construct, id: str, **kwargs): super().__init__(scope, id, **kwargs) s3.Bucket(self, "MyBucket") app = App() MyStack(app, 'Stack1') MyStack(app, 'Stack2')
Java
// MyStack.java package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; import software.constructs.Construct; import software.amazon.awscdk.services.s3.Bucket; public class MyStack extends Stack { public MyStack(final Construct scope, final String id) { this(scope, id, null); } public MyStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); new Bucket(this, "MyBucket"); } } // Main.java package com.myorg; import software.amazon.awscdk.App; public class Main { public static void main(String[] args) { App app = new App(); new MyStack(app, "Stack1"); new MyStack(app, "Stack2"); } }
C#
using Amazon.CDK; using constructs; using Amazon.CDK.AWS.S3; public class MyStack : Stack { public MyStack(Construct scope, string id, IStackProps props) : base(scope, id, props) { new Bucket(this, "MyBucket"); } } class Program { static void Main(string[] args) { var app = new App(); new MyStack(app, "Stack1"); new MyStack(app, "Stack2"); } }
import { App, Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as s3 from 'aws-cdk-lib/aws-s3'; class MyStack extends Stack { constructor(scope: Construct, id: string, props: StackProps = {}) { super(scope, id, props); new s3.Bucket(this, 'MyBucket'); } } const app = new App(); new MyStack(app, 'Stack1'); new MyStack(app, 'Stack2');

Chemins

Les constructions d'une AWS CDK application forment une hiérarchie ancrée dans la App classe. Nous appelons chemin la collection IDs d'une construction donnée, de sa construction parente, de son grand-parent, etc. jusqu'à la racine de l'arbre de construction.

Affiche AWS CDK généralement les chemins dans vos modèles sous forme de chaîne. Les niveaux IDs de départ sont séparés par des barres obliques, en commençant par le nœud situé juste sous l'Appinstance racine, qui est généralement une pile. Par exemple, les chemins des deux ressources du compartiment Amazon S3 dans l'exemple de code précédent sont Stack1/MyBucket etStack2/MyBucket.

Vous pouvez accéder au chemin de n'importe quelle construction par programmation, comme illustré dans l'exemple suivant. Cela permet d'obtenir le chemin de myConstruct (oumy_construct, comme l'écriraient les développeurs Python). Comme ils IDs doivent être uniques dans le cadre de leur création, leurs chemins sont toujours uniques au sein d'une AWS CDK application.

TypeScript
const path: string = myConstruct.node.path;
JavaScript
const path = myConstruct.node.path;
Python
path = my_construct.node.path
Java
String path = myConstruct.getNode().getPath();
C#
string path = myConstruct.Node.Path;
const path: string = myConstruct.node.path;

Unique IDs

AWS CloudFormation exige que tous les éléments logiques IDs d'un modèle soient uniques. Pour cette raison, ils AWS CDK doivent être en mesure de générer un identifiant unique pour chaque construction d'une application. Les ressources ont des chemins qui sont globalement uniques (les noms de toutes les étendues de la pile vers une ressource spécifique). Par conséquent, il AWS CDK génère les identifiants uniques nécessaires en concaténant les éléments du chemin et en ajoutant un hachage à 8 chiffres. (Le hachage est nécessaire pour distinguer des chemins distincts, tels que A/B/C etA/BC, qui donneraient le même AWS CloudFormation identifiant. AWS CloudFormation les identifiants sont alphanumériques et ne peuvent pas contenir de barres obliques ou d'autres caractères de séparation.) Cette AWS CDK chaîne est appelée l'identifiant unique de la construction.

En général, votre AWS CDK application ne devrait pas avoir besoin de connaître le terme « unique IDs ». Vous pouvez toutefois accéder à l'identifiant unique de n'importe quelle construction par programmation, comme indiqué dans l'exemple suivant.

TypeScript
const uid: string = Names.uniqueId(myConstruct);
JavaScript
const uid = Names.uniqueId(myConstruct);
Python
uid = Names.unique_id(my_construct)
Java
String uid = Names.uniqueId(myConstruct);
C#
string uid = Names.Uniqueid(myConstruct);
const uid: string = Names.uniqueId(myConstruct);

L'adresse est un autre type d'identifiant unique qui distingue de manière unique les ressources CDK. Dérivé du hachage SHA-1 du chemin, il n'est pas lisible par l'homme. Cependant, sa longueur constante et relativement courte (toujours 42 caractères hexadécimaux) le rend utile dans les situations où l'identifiant unique « traditionnel » peut être trop long. Certaines constructions peuvent utiliser l'adresse du AWS CloudFormation modèle synthétisé au lieu de l'identifiant unique. Encore une fois, votre application ne devrait généralement pas avoir besoin de connaître les adresses de ses constructions, mais vous pouvez récupérer l'adresse d'une construction comme suit.

TypeScript
const addr: string = myConstruct.node.addr;
JavaScript
const addr = myConstruct.node.addr;
Python
addr = my_construct.node.addr
Java
String addr = myConstruct.getNode().getAddr();
C#
string addr = myConstruct.Node.Addr;
const addr: string = myConstruct.node.addr;

Logique IDs

Les éléments uniques IDs servent d'identificateurs logiques (ou de noms logiques) des ressources dans les AWS CloudFormation modèles générés pour les constructions représentant AWS les ressources.

Par exemple, le compartiment Amazon S3 créé dans l'exemple précédent Stack2 génère une AWS::S3::Bucket ressource. L'ID logique de la ressource se trouve Stack2MyBucket4DD88B4F dans le AWS CloudFormation modèle obtenu. (Pour plus de détails sur la façon dont cet identifiant est généré, voirUnique IDs.)

Stabilité de l'identifiant logique

Évitez de modifier l'ID logique d'une ressource après sa création. AWS CloudFormation identifie les ressources par leur identifiant logique. Par conséquent, si vous modifiez l'identifiant logique d'une ressource, AWS CloudFormation créez une nouvelle ressource avec le nouvel identifiant logique, puis supprimez l'identifiant existant. Selon le type de ressource, cela peut entraîner une interruption de service, une perte de données, ou les deux.

Sur cette page

Rubrique suivante :

Jetons

Rubrique précédente :

Ressources
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.