AWS配置:安全组ID和名称不匹配

Sib*_*ibi 1 ssh amazon-ec2 amazon-web-services terraform

我有以下配置:

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}"
}
Run Code Online (Sandbox Code Playgroud)

当我这样做的时候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
Run Code Online (Sandbox Code Playgroud)

如何解决以上错误?

Rtm*_*tmY 6

我在这里添加另一个解决方案,因为我遇到了同样的问题,并将安全组更改id为 并name没有解决问题。

检查资源下的Terraform 文档,instance我们可以看到该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.
Run Code Online (Sandbox Code Playgroud)

在其下方我们可以看到以下注释:

注意:如果您要在 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.
Run Code Online (Sandbox Code Playgroud)

所以对我来说改变 security_groups 解决 vpc_security_group_ids 了这个问题


Sib*_*ibi 5

你必须改变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}" ]
}
Run Code Online (Sandbox Code Playgroud)

它接受组名,而不接受id参数。