S3 + DynamoDB is solid, but honestly I'd push harder on the team process side. We had the same setup and still had someone manually run terraform apply from their laptop because they "just needed to fix one thing quickly."
Remote state only solves half the problem. You need policy: one person deploys to prod, state locking actually enforced (not just configured), maybe a plan approval step. We started running terraform plan in CI and posting diffs to Slack before anyone touched prod. Sounds heavy but caught mistakes constantly.
The credentials thing though - use AWS IAM roles instead of storing keys anywhere. Game changer for peace of mind.
Cloud architect. AWS and serverless.