Questa è la guida per sviluppatori AWS CDK v2. Il vecchio CDK v1 è entrato in manutenzione il 1° giugno 2022 e ha terminato il supporto il 1° giugno 2023.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
I tag sono elementi chiave-valore informativi che puoi aggiungere ai costrutti dell'app. AWS CDK Un tag applicato a un determinato costrutto si applica anche a tutti i suoi figli taggabili. I tag sono inclusi nel AWS CloudFormation modello sintetizzato dall'app e vengono applicati alle risorse che distribuisce. AWS Puoi utilizzare i tag per identificare e classificare le risorse per i seguenti scopi:
-
Semplificazione della gestione
-
Allocazione dei costi
-
Controllo accessi
-
Qualsiasi altro scopo da te ideato
Suggerimento
Per ulteriori informazioni su come utilizzare i tag con AWS le risorse, consulta le migliori pratiche per l'etichettatura AWS delle risorse nel white paper.AWS
Utilizzo dei tag
La Tags
classe include il metodo staticoof()
, tramite il quale è possibile aggiungere o rimuovere tag dal costrutto specificato.
-
Tags.of(
applica un nuovo tag al costrutto dato e a tutti i suoi figli.SCOPE
).add() -
Tags.of(
rimuove un tag dal costrutto dato e da tutti i suoi figli, compresi i tag che un costrutto figlio potrebbe aver applicato a se stesso.SCOPE
).remove()
Nota
Il tagging è implementato utilizzando. Aspetti e AWS CDK Gli aspetti sono un modo per applicare un'operazione (come l'etichettatura) a tutti i costrutti in un determinato ambito.
L'esempio seguente applica la chiave del tag con il valore value a un costrutto.
Tags.of(myConstruct).add('key', 'value');
L'esempio seguente elimina la chiave del tag da un costrutto.
Tags.of(myConstruct).remove('key');
Se utilizzate Stage
costrutti, applicate il tag al Stage
livello o al di sotto. I tag non vengono applicati oltre Stage
i limiti.
Priorità dei tag
AWS CDK Applica e rimuove i tag in modo ricorsivo. In caso di conflitti, vince l'operazione di tagging con la priorità più alta. (Le priorità vengono impostate utilizzando la priority
proprietà opzionale). Se le priorità di due operazioni sono le stesse, vince l'operazione di etichettatura più vicina alla parte inferiore dell'albero di costruzione. Per impostazione predefinita, l'applicazione di un tag ha una priorità di 100 (ad eccezione dei tag aggiunti direttamente a una AWS CloudFormation risorsa, che ha una priorità di 50). La priorità predefinita per la rimozione di un tag è 200.
Quanto segue applica un tag con una priorità di 300 a un costrutto.
Tags.of(myConstruct).add('key', 'value', {
priority: 300
});
Proprietà facoltative
I tag properties
consentono di ottimizzare il modo in cui i tag vengono applicati o rimossi dalle risorse. Tutte le proprietà sono facoltative.
applyToLaunchedInstances
(Python:)apply_to_launched_instances
-
Disponibile solo per add (). Per impostazione predefinita, i tag vengono applicati alle istanze avviate in un gruppo Auto Scaling. Imposta questa proprietà su false per ignorare le istanze avviate in un gruppo Auto Scaling.
includeResourceTypes
/excludeResourceTypes
(Python:include_resource_types
/)exclude_resource_types
-
Usali per manipolare i tag solo su un sottoinsieme di risorse, in base AWS CloudFormation ai tipi di risorse. Per impostazione predefinita, l'operazione viene applicata a tutte le risorse del sottoalbero di costruzione, ma può essere modificata includendo o escludendo determinati tipi di risorse. L'esclusione ha la precedenza sull'inclusione, se vengono specificati entrambi.
priority
-
Utilizzatelo per impostare la priorità di questa operazione rispetto alle altre
Tags.remove()
operazioniTags.add()
and. I valori più alti hanno la precedenza sui valori più bassi. L'impostazione predefinita è 100 per le operazioni di aggiunta (50 per i tag applicati direttamente alle AWS CloudFormation risorse) e 200 per le operazioni di rimozione.
L'esempio seguente applica il tag tagname con il valore value e la priorità 100 alle risorse di tipo presente AWS::Xxx::Yyynel costrutto. Non applica il tag alle istanze avviate in un gruppo Amazon EC2 Auto Scaling o a risorse di tipo diverso. AWS::Xxx::Zzz (Si tratta di segnaposti per due tipi di risorse arbitrari ma diversi.) AWS CloudFormation
Tags.of(myConstruct).add('tagname', 'value', {
applyToLaunchedInstances: false,
includeResourceTypes: ['AWS::Xxx::Yyy'],
excludeResourceTypes: ['AWS::Xxx::Zzz'],
priority: 100,
});
L'esempio seguente rimuove il tag tagname con priorità 200 dalle risorse di tipo presente AWS::Xxx::Yyynel costrutto, ma non dalle risorse di tipo. AWS::Xxx::Zzz
Tags.of(myConstruct).remove('tagname', {
includeResourceTypes: ['AWS::Xxx::Yyy'],
excludeResourceTypes: ['AWS::Xxx::Zzz'],
priority: 200,
});
Esempio
L'esempio seguente aggiunge il tag key StackTypecon value TheBesta qualsiasi risorsa creata all'interno del Stack
file denominato. MarketingSystem
Quindi lo rimuove nuovamente da tutte le risorse tranne le sottoreti Amazon EC2 VPC. Il risultato è che solo le sottoreti hanno il tag applicato.
import { App, Stack, Tags } from 'aws-cdk-lib';
const app = new App();
const theBestStack = new Stack(app, 'MarketingSystem');
// Add a tag to all constructs in the stack
Tags.of(theBestStack).add('StackType', 'TheBest');
// Remove the tag from all resources except subnet resources
Tags.of(theBestStack).remove('StackType', {
excludeResourceTypes: ['AWS::EC2::Subnet']
});
Il codice seguente consente di ottenere lo stesso risultato. Considerate quale approccio (inclusione o esclusione) rende più chiaro il vostro intento.
Tags.of(theBestStack).add('StackType', 'TheBest',
{ includeResourceTypes: ['AWS::EC2::Subnet']});
Etichettatura di singoli costrutti
Tags.of(scope).add(key, value)
è il modo standard per aggiungere tag ai costrutti in. AWS CDK Il suo comportamento di tree-walking, che contrassegna in modo ricorsivo tutte le risorse taggabili nell'ambito di un determinato ambito, è quasi sempre quello che si desidera. A volte, tuttavia, è necessario etichettare uno o più costrutti specifici e arbitrari.
Uno di questi casi prevede l'applicazione di tag il cui valore deriva da alcune proprietà del costrutto da etichettare. L'approccio di etichettatura standard applica in modo ricorsivo la stessa chiave e lo stesso valore a tutte le risorse corrispondenti nell'ambito. Tuttavia, qui il valore potrebbe essere diverso per ogni costrutto taggato.
I tag vengono implementati utilizzando gli aspetti e il CDK chiama il visit()
metodo del tag per ogni costrutto nell'ambito specificato. Tags.of(scope)
Possiamo chiamare Tag.visit()
direttamente per applicare un tag a un singolo costrutto.
new cdk.Tag(key, value).visit(scope);
È possibile etichettare tutti i costrutti in un ambito, ma lasciare che i valori dei tag derivino dalle proprietà di ciascun costrutto. A tale scopo, scrivete un aspetto e applicate il tag nel visit()
metodo dell'aspetto, come mostrato nell'esempio precedente. Quindi, aggiungete l'aspetto all'ambito desiderato utilizzandoAspects.of(scope).add(aspect)
.
L'esempio seguente applica un tag a ciascuna risorsa in uno stack contenente il percorso della risorsa.
class PathTagger implements cdk.IAspect {
visit(node: IConstruct) {
new cdk.Tag("aws-cdk-path", node.node.path).visit(node);
}
}
stack = new MyStack(app);
cdk.Aspects.of(stack).add(new PathTagger())
Suggerimento
La logica dell'etichettatura condizionale, che include priorità, tipi di risorse e così via, è integrata nella classe. Tag
È possibile utilizzare queste funzionalità quando si applicano tag a risorse arbitrarie; il tag non viene applicato se le condizioni non sono soddisfatte. Inoltre, la Tag
classe tagga solo le risorse etichettabili, quindi non è necessario verificare se un costrutto è taggabile prima di applicare un tag.