Terraform创建AWS安全组时协议参数无效问题求助
问题解决:Terraform部署AWS安全组时协议参数错误
错误原因:你在ingress块中使用的protocol = "MySQL/Aurora"是AWS控制台展示的友好名称,并非AWS API认可的合法协议值。AWS安全组的protocol参数仅支持两种格式:
- IANA标准协议名称,例如
tcp、udp、icmp - 对应协议的数字编号,例如TCP对应
6,UDP对应17,ICMP对应1
由于MySQL与Aurora均基于TCP协议通信,3306是它们的默认TCP端口,因此只需将协议参数修改为tcp或6即可解决问题。
修正后的Terraform代码:
resource "aws_security_group" "ort_to_db" { name = "MySQL/AURORA" vpc_id = data.aws_vpc.vpc_ort.id ingress { from_port = 3306 to_port = 3306 protocol = "tcp" # 也可替换为数字 6 cidr_blocks = ["0.0.0.0/0"] } egress { from_port = 0 to_port = 0 protocol = -1 cidr_blocks = ["0.0.0.0/0"] } }
补充说明:AWS控制台的服务选项是简化操作的快捷方式——当你选择"MySQL/Aurora"时,控制台会自动帮你填充端口3306和协议TCP,但Terraform调用AWS API时必须直接指定合法的协议标识符,不能使用控制台的友好名称。
内容的提问来源于stack exchange,提问作者Alvaro
相关产品推荐
相关产品推荐

