I've never enjoyed AWS more than with LLMs managing infra as code through sst.dev
CDK (atm) as limitations and it's also got a more imperative model. It's touted as being more familiar as it has multiple language support, but I don't think shoehorning declarative context into imperative languages works well.