Failure to extrapolate security group ID

Terraform Version
Terraform v0.12.23

provider.aws v2.53.0
Terraform Configuration Files

...resource "aws_elasticache_subnet_group" "redis-group" {
  name       = "${var.ENVIRONMENT}-redis-group"
  subnet_ids = "${data.aws_subnet_ids.private.ids}"
  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_elasticache_cluster" "redis" {
  cluster_id               = "${var.ENVIRONMENT}"
  engine                   = "redis"
  node_type                = "cache.t2.small"
  num_cache_nodes          = 1
  parameter_group_name     = "default.redis3.2"
  engine_version           = "3.2.4"
  port                     = 6379
  subnet_group_name        = "${aws_elasticache_subnet_group.redis-group.name}"
  security_group_ids       = ["${data.aws_security_groups.vpn-sg.id}", "${data.aws_security_groups.peering-sg.id}", "${data.aws_security_groups.office-sg.id}"]
  snapshot_retention_limit = 14
  tags = {
    Name        = "[${var.ENVIRONMENT}-Redis]",
    Team        = "Infra",
    Provisioner = "Terraform",
    Environment = "[${var.ENVIRONMENT}]"
  }
  lifecycle {
    create_before_destroy = true
  }
}

Debug Output
terraform.tfstate

{
 "mode": "data",
       "type": "aws_security_groups",
       "name": "office-sg",
       "provider": "provider.aws",
       "instances": [
         {
           "schema_version": 0,
           "attributes": {
             "filter": [
               {
                 "name": "group-name",
                 "values": [
                   "*Site*"
                 ]
               },
               {
                 "name": "vpc-id",
                 "values": [
                   "vpc-0a6ec6b4"
                 ]
               }
             ],
             "id": "terraform-20200318113653210400000001",
             "ids": [
               "sg-076fabfab18"
             ],
             "tags": null,
             "vpc_ids": [
               "vpc-0a6ec6b4b"
             ]
           }
         }
       ]
     },
     {
       "mode": "data",
       "type": "aws_security_groups",
       "name": "peering-sg",
       "provider": "provider.aws",
       "instances": [
         {
           "schema_version": 0,
           "attributes": {
             "filter": [
               {
                 "name": "group-name",
                 "values": [
                   "*peer*"
                 ]
               },
               {
                 "name": "vpc-id",
                 "values": [
                   "vpc-0a6ec6b"
                 ]
               }
             ],
             "id": "terraform-20200318113653211800000002",
             "ids": [
               "sg-08246fbbcb"
             ],
             "tags": null,
             "vpc_ids": [
               "vpc-0a6ec6b4b"
             ]
           }
         }
       ]
     },
     {
       "mode": "data",
       "type": "aws_security_groups",
       "name": "vpn-sg",
       "provider": "provider.aws",
       "instances": [
         {
           "schema_version": 0,
           "attributes": {
             "filter": [
               {
                 "name": "group-name",
                 "values": [
                   "*VPN*"
                 ]
               },
               {
                 "name": "vpc-id",
                 "values": [
                   "vpc-0a6ec6b"
                 ]
               }
             ],
             "id": "terraform-20200318113653217700000003",
             "ids": [
               "sg-09f626b389"
             ],
             "tags": null,
             "vpc_ids": [
               "vpc-0a6ec6b4b"
             ]
           }
         }
       ]
     },

Expected Behavior
The security groups exist, and are in use by other EC2 instances, so terraform should read the SG id and add them to the array to associate with the Elasticache cluster.

Actual Behavior
Error: error creating Elasticache Cache Cluster: InvalidParameterValue: Some security group Id not recognized by EC2: securityGroupIds[[terraform-20200318113653211800000002, terraform-20200318113653210400000001, terraform-20200318113653217700000003]], awsAccountId[008770191051]
status code: 400, request id: 2a588f10-c29d-4b57-87ff-dd7213b0adfd

  on databases.tf line 10, in resource "aws_elasticache_cluster" "redis":
  10: resource "aws_elasticache_cluster" "redis" {

I was told to use ‘ids’ and not ‘id’ in the call for the SG but when I do that i get
Error: Incorrect attribute value type

  on databases.tf line 19, in resource "aws_elasticache_cluster" "redis":
  19:   security_group_ids       = ["${data.aws_security_groups.vpn-sg.ids}", "${data.aws_security_groups.peering-sg.ids}", "${data.aws_security_groups.office-sg.ids}"]
    |----------------
    | data.aws_security_groups.office-sg.ids is list of string with 1 element
    | data.aws_security_groups.peering-sg.ids is list of string with 1 element
    | data.aws_security_groups.vpn-sg.ids is list of string with 1 element

Inappropriate value for attribute "security_group_ids": element 0: string
required.

Anyone can help me understand what is wrong ?