export function tagSubnets()

in lib/utils/vpc-utils.ts [12:54]


export function tagSubnets(stack: Stack, subnets: ec2.ISubnet[], tag: string, value: string): void {
    for (const subnet of subnets){
        if (!ec2.Subnet.isVpcSubnet(subnet)) {
            throw new Error(
                'This is not a valid subnet.'
            );
        } 
    }
    
    const tags = [{
        Key: tag,
        Value: value
    }];

    const arns = subnets.map(function(val, _){
        return `arn:aws:ec2:${stack.region}:${stack.account}:subnet/`+val.subnetId;
    });

    const parameters = {
        Resources: subnets.map((arn) => arn.subnetId),
        Tags: tags
    };
    
    const sdkCall: AwsSdkCall = {
        service: 'EC2',
        action: 'createTags',
        parameters: parameters,
        physicalResourceId: { id: `${stack.stackName}-subnetTagger`}
    };
    
    new AwsCustomResource(stack, `${stack.stackName}-subnet-tags`, {
        policy: AwsCustomResourcePolicy.fromSdkCalls({
            resources: arns,
        }),

        onCreate: sdkCall,
        onUpdate: sdkCall,
        onDelete: { 
            ...sdkCall, 
            action: 'deleteTags',
        },
    });
}