Terraform can help abstract those API in declarative coding syntax
Terraform can hook into even more services besides AWS (such as Azure)
Terraform is code agnostic
Example use case
I want to create the copy-paste standard of HA (high availability) applications in AWS. How can I do this?
Example use case
Copy github repo -> spin up many projects
Example use case
Version control your infrastructure code changes
Downsides to Terraforming
Mental Overhead - You need to know how AWS works on top of writing Terraform.
Discipling in the process - You need to modify your infrastructure in terraform, not directly on AWS. Else your terraform scripts are not in parity with what is on AWS
More moving parts - to see changes in AWS, you have to do it in terraform first
Upsides to Terraforming
Observability for how infrastructure has changed over time outside in a intentful fashion (e.g. looking at AWS logs for changes is too noisy)
Makes it so your developers can deploy compiled code (like lambda functions) purely on a CLI
A top level glance at what your entire AWS infrastructure looks like in a few .tf files