web-dev-qa-db-ja.com

Terraformは、「groupNameをパラメータサブネットと一緒に使用することはできません」または「VPCセキュリティグループを非VPC起動に使用することはできません」をスローします

AWSVPCでaws_instanceを設定する方法を理解しようとすると、次のエラーが発生します。

* 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: []
16
Dennis Hoer

これは、セキュリティグループがインスタンスに関連付けられている方法によるものです。

サブネットがない場合は、セキュリティグループの名前を使用して関連付けることができます。

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

サブネットも関連付けられている場合、名前を使用することはできませんが、代わりにセキュリティグループのIDを使用する必要があります。

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

上記は、my_security_groupという名前のセキュリティグループと、my_subnetという名前のサブネットを作成したことを前提としています。

15
agbodike

tl; dr

CLIまたはAPIアクションに対してデフォルト以外のVPCのセキュリティグループを指定する場合、セキュリティグループIDを使用する必要がありますおよびnotセキュリティグループ名を使用してセキュリティグループを識別します。

参照: EC2-VPCのセキュリティグループ


つまり、VPC起動を構成しようとしているのに、VPC以外の起動についてエラーが表示される場合は、以下を確認してください。

  • subnet_idを指定した場合、security_groupsを一緒に使用することはできません。デフォルト以外のVPCの場合は、代わりにセキュリティグループIDを使用する必要があります。

  • インスタンスを起動するサブネットを示す右subnet_idを指定してください(VPCの場合のみ)。リクエストでサブネットを指定しない場合、デフォルトのサブネットがデフォルトのVPCから割り当てられます(EC2-VPCのみのアカウント)。

  • 正しいインスタンスタイプ(c4、m4、t2など)を選択していることを確認してください。 VPCでのみ使用可能なインスタンスタイプ を参照してください。

参照: run-instances ドキュメントページ:

  • 一部のインスタンスタイプは、VPCでのみ起動できます。デフォルトのVPCがない場合、またはリクエストでサブネットIDを指定しない場合、run-instancesは失敗します。

  • --security-groups- [EC2-クラシック、デフォルトVPC] 1つ以上のセキュリティグループ名。デフォルト以外のVPCの場合は、代わりにセキュリティグループIDを使用する必要があります。

AWSドキュメントの関連ページ:

6
kenorb

私は同様の問題に遭遇しました。

セキュリティグループとサブネットの間には関係があり、どちらもVPCへのリンクです。したがって、「subnet1」にインスタンス(EC2インスタンスなど)を作成するようにコマンドを実行すると、インスタンスは、subnet1が含まれる「vpc1」に作成されます。セキュリティグループを定義しない場合、「デフォルト」が使用されます。 VPCのセキュリティグループ。

サブネットと同じvpcにないセキュリティグループを割り当てようとすると複雑になる可能性があるため、サブネットを定義するときにセキュリティグループを許可しない理由は理にかなっています。

ただし、AWSが少なくともサブネットと同じVPCでセキュリティグループを定義できるようにしたほうがよかったでしょう。

3
Dhanuka777

AWS VPCを設定するときは、必ずサブネットIDとグループIDのみを使用してください。

例:

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