如何解决Terraform 11 附加安全组错误
我正在 Terraform 11 中添加额外的安全组,使用 AWS Provider 2.70.0 到 EFS 挂载目标。
代码块是:
resource "aws_efs_mount_target" "default" {
count = "${length(split(",",var.backend_subnets)) > 0 ? length(split(",var.backend_subnets)) : 0}"
file_system_id = "${aws_efs_file_system.default.id}"
ip_address = "${var.mount_target_ip_address}"
subnet_id = "${element(split(",var.backend_subnets),count.index)}"
security_groups = ["${var.additional_security_groups == "" ? aws_security_group.efs_default_sg.id : format("%s,%s",var.additional_security_groups,aws_security_group.efs_default_sg.id)}"]
}
变量定义为:
variable "additional_security_groups" {
description = "Comma separated string of security group ID's"
default = ""
}
但是出现以下错误:
* module.efs.aws_efs_mount_target.default[1]: 1 error(s) occurred:
* aws_efs_mount_target.default.1: ValidationException:
status code: 400,request id: 5ee48121-27c3-432b-98e9-e2ffdc6e0fdd
plugin.terraform-provider-aws_v2.70.0_x4: 2021/03/26 17:49:50 [ERR] plugin: plugin server: accept unix /tmp/plugin935042092: use of closed network connection
在没有附加安全组的情况下运行没有问题。
任何想法或提示将不胜感激!
解决方法
所以问题不在于插件,而在于安全组的比较语句。
工作比较:
security_groups = ["${split(",",length(var.additional_security_groups) > 0 ? join(",concat(list(aws_security_group.efs_default_sg.id),var.additional_security_groups)) : join(",list(aws_security_group.efs_default_sg.id)))}"]
为了支持这一点,必须将变量类型更改为列表:
variable "additional_security_groups" {
description = "Comma separated list of security group ID's"
default = ["sg-123","sg-789"]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。