Подтвердить что ты не робот

Terraform throws "groupName не может использоваться с подсети параметров" или "группы безопасности VPC не могут использоваться для запуска без VPC"

При попытке выяснить, как настроить aws_instance с AWC VPC, возникают следующие ошибки:

* Error launching source instance: InvalidParameterCombination: The parameter groupName cannot be used with the parameter subnet
    status code: 400, request id: []

или

* Error launching source instance: InvalidParameterCombination: VPC security groups may not be used for a non-VPC launch
    status code: 400, request id: []
4b9b3361

Ответ 1

Это связано с тем, как группа безопасности связана с экземпляром.

Без подсети это нормально, чтобы связать его с помощью имени группы безопасности:

resource "aws_instance" "server" {
  ...
  security_groups = [ "${aws_security_group.my_security_group.name}" ]
}

В случае, когда подсеть также связана, вы не можете использовать имя, но вместо этого должны использовать идентификатор группы безопасности:

security_groups = [ "${aws_security_group.my_security_group.id}" ]
subnet_id = "${aws_subnet.my_subnet.id}"

Вышеупомянутое предполагает, что вы создали группу безопасности с именем my_security_group, а подсеть с именем my_subnet

Ответ 2

TL;DR

Когда вы указываете группу безопасности для VPC с неконтролируемой проверкой на CLI или действия API, вы должны использовать идентификатор группы безопасности и не имя группы безопасности для идентификации группа безопасности.

Смотрите: Группы безопасности для EC2-VPC


Другими словами, если вы пытаетесь настроить запуск VPC, но ошибка возникает из-за запуска не VPC, пожалуйста, проверьте ниже.

  • Если вы указали subnet_id, вы не можете использовать security_groups вместе с ним. Для VPC не по умолчанию вы должны использовать идентификаторы групп безопасности.

  • Укажите правильную subnet_id, которая указывает подсеть для загрузки экземпляра в (только для VPC). Если вы не укажете подсеть в запросе, вам будет назначена подсеть по умолчанию из вашего VPC по умолчанию (только учетные записи EC2-VPC).

  • Убедитесь, что вы выбрали правильный тип экземпляра (например, c4, m4, t2), см. Типы экземпляров доступны только в VPC.

Смотрите также: run-instances docs:

  • Некоторые типы экземпляров могут быть запущены только в VPC. Если у вас нет VPC по умолчанию или если вы не укажете идентификатор подсети в запросе, выполняются экземпляры экземпляра.

  • --security-groups - [EC2-Classic, по умолчанию VPC] Одно или несколько имен групп безопасности. Для неконтролируемого VPC вместо этого необходимо использовать идентификаторы группы безопасности.

Связанные страницы в документации AWS:

Ответ 3

Я столкнулся с подобной проблемой.

Существует связь между Группой безопасности и Подсетями, которая является как ссылками на VPC. Поэтому, если вы командуете создать экземпляр (например, экземпляр EC2) в "подсети1", ваш экземпляр будет создан в "vpc1", где находится подсеть 1. Когда вы не определяете группу безопасности, она будет использовать "по умолчанию", группа безопасности в VPC.

Имеет смысл, почему он не разрешает группы безопасности при определении подсети, потому что это может быть сложно, если вы пытаетесь назначить группы безопасности не в том же vpc, что и подсеть.

Но было бы лучше, что AWS позволяет определить группу безопасности по крайней мере в том же VPC, что и подсеть.

Ответ 4

При настройке AWS VPC обязательно используйте только идентификатор подсети и идентификаторы групп.

Пример:

resource "aws_instance" "forms_selenium_hub_dev" {
  ...
  subnet_id = "subnet-1a2b3c4d5e" # Subnet - Subnet ID 
  vpc_security_group_ids = ["sg-a1b2c3d4e5"] # Security Groups - Group ID
}