Summary - 要旨
terraformのData Sourceを使うと外部リソースを参照できるためとても便利である。
が、moduleの中で直接呼ぶよりは、呼び出し元で呼ぶほうが使いまわしやすくてよさそうだ。
Detail - なんのこっちゃ
Data Sourceをmoduleの中で呼ぶと、それに依存したコードを書くことになると思う。
たとえばmoduleの中で以下のようにしていると
data "aws_ami" "amazon_linux" { most_recent = true owners = ["amazon"] (省略) } resource "aws_instance" "example" { ami = data.aws_ami.amazon_linux.id (省略) }
後になって一部AmazonLinux以外を使いたいと思ったらmoduleを書き直さないといけなくなる。
が、variableで渡されていればmoduleをそのまま使いまわすことができる。
variable "ami_id" {} resource "aws_instance" "example" { ami = var.ami_id (省略) }
Module内でData Sourceを呼ぶと外部に強く依存してしまうので、依存性の注入のようにvariableで渡したほうがモジュールの独立性が高まっていい、ということ。