terraform 12- запрос групп безопасности с использованием источника данных

#terraform #aws-security-group #terraform0.12

#terraform #aws-security-group #terraform0.12

Вопрос:

Я пытаюсь запросить список групп безопасности, используя источник данных в terraform verson 12. Получение приведенной ниже ошибки при планировании terraform.

 variable "name" {

 default = "test"

}

variable "region" {

 default = "eu-west-1"

}

data "aws_security_groups" "test" {
  filter {
    name   = "tag:Name"
    values = ["${format("sg_%s_*_vpc%s-public", var.name, var.region)}"]
  }
}
 

вывод aws ec2 describe-security-groups --group-ids "sg-0242e0b30a83d663c" "sg-06a144e01ca1fec0c" "sg-0d0fd65e511a59721"

 {
    "SecurityGroups": [
        {
            "Description": "bar",
            "GroupName": "sg_test_foo_vpceu-west-1-public",
            "IpPermissions": [],
            "GroupId": "sg-0242e0b30a83d663c",
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "Ipv6Ranges": [],
                    "PrefixListIds": [],
                    "UserIdGroupPairs": []
                }
            ],
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "sg_test_foo_vpceu-west-1-public"
                }
            ],
            "VpcId": "vpc-3053cb58"
        },
        {
            "Description": "foo",
            "GroupName": "sg_test_bar_vpceu-west-1-public",
            "IpPermissions": [],
            "GroupId": "sg-0d0fd65e511a59721",
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "Ipv6Ranges": [],
                    "PrefixListIds": [],
                    "UserIdGroupPairs": []
                }
            ],
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "sg_test_bar_vpceu-west-1-public"
                }
            ],
            "VpcId": "vpc-3053cb58"
        },
        {
            "Description": "test-sg",
            "GroupName": "sg_test_foobar_vpceu-west-1-public",
            "IpPermissions": [],
            "GroupId": "sg-06a144e01ca1fec0c",
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "Ipv6Ranges": [],
                    "PrefixListIds": [],
                    "UserIdGroupPairs": []
                }
            ],
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "sg_test_foobar_vpceu-west-1-public"
                }
            ],
            "VpcId": "vpc-3053cb58"
        }
    ]
}
 

Когда я запускаю план terraform, я получаю следующее сообщение.

Ваш запрос не вернул результатов. Пожалуйста, измените критерии поиска и повторите попытку

Похоже, terraform не понравилось, как я использовал функцию форматирования.

Не мог бы кто-нибудь помочь мне с этим, пожалуйста? Спасибо.

Также попробовал приведенный ниже формат, но ни один из них не работал.

 data "aws_security_groups" "sg" {
    filter { 
        name   = "group-name" 
        values = ["sg_test_bar_vpceu-west-1-public"] 
    } 
    filter { 
        name   = "vpc-id" 
        values = ["vpc-3053cb58"] 
    } 
}

data "aws_security_groups" "sg_1" { 
    filter { 
        name   = "tag:Name" 
        values = ["sg_test_bar_vpceu-west-1-public"] 
    } 
    filter { 
        name   = "vpc-id" 
        values = ["vpc-3053cb58"] 
    } 
}

data "aws_security_groups" "sg_2" {
     tags = { 
        Name = "sg_test_bar_vpceu-west-1-public" 
      } 
    filter { 
        name   = "vpc-id" 
        values = ["vpc-3053cb58"] 
     } 
}
 

Комментарии:

1. Каково фактическое имя группы?

2. Также убедитесь, что вы не путаете имя группы SG с тегом ключа Name SG . Вы используете последнее.

3. Пожалуйста, не могли бы вы отредактировать свой вопрос, включив в него вывод о aws ec2 describe-security-groups --group-ids ... том, где вы ищете конкретные группы безопасности, которые Terraform должен найти с помощью этого источника данных?

4. @ydaetskcoR я добавил вывод. Не могли бы вы взглянуть на это?