我正在编写一个terraform模块以与ASG一起创建启动配置。仅当密钥名未传递给ec2实例的模块时,它才会创建“ aws_key_pair
”。如果传递了密钥名,则改用该密钥名。我正在使用计数功能。
一切正常。但是,当我将密钥传递给模块并尝试在启动配置中使用它时,它给我的错误是“ {aws_key_pair.key_pair.id
”不存在,这在某种程度上是正确的,因为它不是我通过传递以来创建的钥匙。但是terraform试图以某种方式查找不存在的“ aws_key_pair.key_pair.id
”变量。
在变量处理中好像是一个地形问题。我在子网中也遇到了同样的问题,但是我可以通过使用合并功能来使用它,但是在使用key的情况下这似乎不起作用:
key_name = "${var.my_key == "" ?aws_key_pair.key_pair.id :var.my_key}"
这适用于安全组:
security_groups = ["${coalesce(var.security_group,join("",aws_security_group.security_group.*.id))}"]
感谢您的帮助。