以下公式ドキュメントから画像を引用します。モジュールごとの詳細については公式をご確認ください。 引用元: Module Creation - Recommended Pattern | Terraform - HashiCorp Learn 変更頻度や役割に応じてモジュールを分けることが明文化されています。 基本的には上記の方針に乗っ取って開発することで、リスクが少なく、スムーズに開発を進められると思います。 問題点 従来通りのWebアプリケーションの設計なら上記の設計で、後はモジュール内をVPC、RDSなどの単位で分割しても問題ないと思います。 しかし、Serverlessアプリケーション開発の場合はサービス間の結合が分かりづらくなる問題があるかと考えます。例えば以下のようにIAM、IoT Core、Lambda、S3をそれぞれ別のモジュールに分割して構築するとします。 上記の構築の場合