My issue with AWS is that its too vast, and creating infrastructure using existing IaC tools only led to more confusion because I had to manage so many resources and keep small details in my head all the time.
Repeating the same setup for multiple projects was a headache. So I started categorizing my infrastructure into more logical models I understand - like a region, server, deployment, and so on.
Soon I realized that I can standardize these models to create pretty much any infrastructure, and continued building this IaC tool on top of these models.