我有以下配置:
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh"
vpc_id = "${aws_default_vpc.default.id}"
description = "Allow ssh connections on port 22"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "your-app" {
ami = "ami-2757f631"
instance_type = "t2.micro"
security_groups = ["${aws_security_group.allow_ssh.id}"]
key_name = "${aws_key_pair.twilio_key.key_name}"
}
当我做terraform apply
时,我收到此错误:
* aws_instance.your-app: Error launching instance, possible mismatch of Security Group IDs and Names. See AWS Instance docs here: https://terraform.io/docs/providers/aws/r/instance.html.
AWS Error: Value () for parameter groupId is invalid. The value cannot be empty
我应该怎么做才能解决上述错误?
您必须将id
更改为name
才能正常工作:
resource "aws_instance" "twilio-app" {
ami = "ami-2757f631"
instance_type = "t2.micro"
key_name = "${aws_key_pair.twilio_key.key_name}"
security_groups = [ "${aws_security_group.allow_ssh.name}" ]
}
它接受组名,而不是 id 参数。
我在这里添加了另一个解决方案,因为我遇到了同样的问题,将安全组id
更改为name
并没有解决问题。
检查instance
资源下的 Terraform 文档,我们可以看到security_groups
参数的用法:
security_groups - (Optional, EC2-Classic and default VPC only) A list of security group names (EC2-Classic) or IDs (default VPC) to associate with.
在此之下,我们可以看到以下注释:
注意:如果要在 VPC 中创建实例,请使用 vpc_security_group_ids相反。
以及vpc_security_group_ids
参数的描述:
vpc_security_group_ids - (Optional, VPC only) A list of security group IDs to associate with.
所以对我来说,从security_groups
改为vpc_security_group_ids
解决了这个问题。