@renovosolutions/cdk-aspects-library-tags
Version:
A library of CDK aspects for tagging AWS resources
38 lines • 3.58 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApplyTags = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cdk_lib_1 = require("aws-cdk-lib");
/**
* An aspect that applies a set of tags to all taggable resources in the given scope.
*
* This aspect can be used to enforce consistent tagging across resources,
* which is useful for cost allocation, resource management, and compliance purposes.
*/
class ApplyTags {
/**
* Creates an instance of the ApplyTags aspect.
*
* @param tags - a record of key-value pairs to apply as tags to taggable resources in the CDK app.
*/
constructor(tags) {
this.tags = tags;
}
/**
* Visits each construct in the scope and applies the tags if the construct is taggable.
*
* @param node - the construct to visit.
*/
visit(node) {
if (aws_cdk_lib_1.TagManager.isTaggable(node)) {
Object.entries(this.tags).forEach(([key, value]) => {
node.tags.setTag(key, value);
});
}
}
}
exports.ApplyTags = ApplyTags;
_a = JSII_RTTI_SYMBOL_1;
ApplyTags[_a] = { fqn: "@renovosolutions/cdk-aspects-library-tags.ApplyTags", version: "0.0.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHl0YWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcGx5dGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFrRDtBQUdsRDs7Ozs7R0FLRztBQUNILE1BQWEsU0FBUztJQU1wQjs7OztPQUlHO0lBQ0gsWUFBWSxJQUE0QjtRQUN0QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxJQUFnQjtRQUNwQixJQUFJLHdCQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBMUJILDhCQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBc3BlY3QsIFRhZ01hbmFnZXIgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogQW4gYXNwZWN0IHRoYXQgYXBwbGllcyBhIHNldCBvZiB0YWdzIHRvIGFsbCB0YWdnYWJsZSByZXNvdXJjZXMgaW4gdGhlIGdpdmVuIHNjb3BlLlxuICpcbiAqIFRoaXMgYXNwZWN0IGNhbiBiZSB1c2VkIHRvIGVuZm9yY2UgY29uc2lzdGVudCB0YWdnaW5nIGFjcm9zcyByZXNvdXJjZXMsXG4gKiB3aGljaCBpcyB1c2VmdWwgZm9yIGNvc3QgYWxsb2NhdGlvbiwgcmVzb3VyY2UgbWFuYWdlbWVudCwgYW5kIGNvbXBsaWFuY2UgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBseVRhZ3MgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSBhcyB0YWdzIHRvIHRhZ2dhYmxlIHJlc291cmNlcyBpbiB0aGUgQ0RLIGFwcC5cbiAgICovXG4gIHRhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFwcGx5VGFncyBhc3BlY3QuXG4gICAqXG4gICAqIEBwYXJhbSB0YWdzIC0gYSByZWNvcmQgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGFwcGx5IGFzIHRhZ3MgdG8gdGFnZ2FibGUgcmVzb3VyY2VzIGluIHRoZSBDREsgYXBwLlxuICAgKi9cbiAgY29uc3RydWN0b3IodGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMudGFncyA9IHRhZ3M7XG4gIH1cblxuICAvKipcbiAgICogVmlzaXRzIGVhY2ggY29uc3RydWN0IGluIHRoZSBzY29wZSBhbmQgYXBwbGllcyB0aGUgdGFncyBpZiB0aGUgY29uc3RydWN0IGlzIHRhZ2dhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZSAtIHRoZSBjb25zdHJ1Y3QgdG8gdmlzaXQuXG4gICAqL1xuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgaWYgKFRhZ01hbmFnZXIuaXNUYWdnYWJsZShub2RlKSkge1xuICAgICAgT2JqZWN0LmVudHJpZXModGhpcy50YWdzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgbm9kZS50YWdzLnNldFRhZyhrZXksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19