Howdy! I have a bit of a different approach I've tried in addition to the ones above:
Multiple AWS accounts for prod vs nonprod in combination to Option 1.
I've created pipelines with Github Actions that would help promote/deploy from one env to another by only changing variable inputs and backends (when different aws accounts)
PRs towards the default(main) branch automatically generates the plan and comments as a message in the pull request.
It relies on AWS/GoogleCloud IAM Federation with Github Actions (
https://awsteele.com/blog/2021/09/15/aws-federation-comes-to-github-actions.html)
I found that it's cleaner to rely on TFVars if you don't want to see drifts, but that's ok to deviate the top-level terraform file if one ENV might have different resources.
When selecting the correct env, I just make sure the
-var-file
points to the correct tfvar.