Why not use CDK L3 constructs (patterns) or the corresponding for Pulumi, since that's what you generate?