How to add a tag to an AWS-CDK construct

According to aws-cdk doc you can add a tag to all constructs/ressources. Tags will inherits to constructs within same "tree". That's pretty cool.

Example using aws-cdk based on java:

MyStack stack = new MyStack(app, "nameOfStack");
Tag.add(stack, "tag_foo", "tag_foo");

AWS-Doc CDK Tagging

AWS CDK Reference: Tag

Tags can be applied to any construct. Tags are inherited, based on the scope. If you tag construct A, and A contains construct B, construct B inherits the tag.

Example from aws-cdk doc:

import { App, Stack, Tag } from require('@aws-cdk/core');

const app = new App();
const theBestStack = new Stack(app, 'MarketingSystem');

// Add a tag to all constructs in the stack
Tag.add(theBestStack, 'StackType', 'TheBest');

The above answers use the deprecated syntax.

Newer version of tagging the whole App:

const app = new cdk.App();
new SomeStack(app, 'SomeStack');
Tags.of(app).add("app", "my-app-name-here");

You could also tag individual stacks only:

const app = new cdk.App();
const stack = new SomeStack(app, 'SomeStack');
Tags.of(stack).add("stack-name", "SomeStack");

Or individual Constructs:

const usersTable = new dynamodb.Table(this, 'Users');
Tags.of(usersTable).add("owner", "team-andromeda");

Tags will apply to sub-Constructs hierarchically.


You can add tags to your CDK v2 app in Python, like so:

import aws_cdk as cdk

app = cdk.App()
cdk.Tags.of(app).add("TEAM", "TeamA") # add tags to the entire app (all resources created by this app)

lambda_stack = LambdaStack(app, 'lambda-stack')

cdk.Tags.of(lambda_stack).add("TEAM", "TeamA") # add tags to the entire stack (all resources of this stack)

...or to a construct:

lambda_role = iam.Role(self,
    assumed_by=iam.ServicePrincipal(service='lambda.amazonaws.com'),
    role_name='lambda-role'
)
cdk.Tags.of(lambda_role).add("TEAM", "TeamA") # add tags to this construct (add tags to just this role)

Tags:

Aws Cdk