Как настроить конечную точку VPC для доступа к DynamoDB с помощью Terraform? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть функция Lambda, работающая в AWS VPC. Эта лямбда должна иметь доступ как к RDS, так и к DynamoDB, поэтому ей нужна конечная точка VPC, настроенная для достижения DynamoDB. Мне удалось заставить его работать, используя ручную настройку, как описано в блоге Amazon здесь , но я изо всех сил пытаюсь определить эквивалентную инфраструктуру как код, используя Terraform.

Я понимаю, что должен определить aws_vpc_endpoint в Terraform (документы здесь ), но я немного растерялся, когда дело доходит до настройки таблицы маршрутизации для него.

Пока это то, что у меня есть, я не уверен, что это правильно, и я оставил знак вопроса в конфигурации route_table_ids. Для записей, если я не настрою таблицу маршрутизации, конечная точка будет создана правильно, но Lambda не получит доступ к DynamoDB.

  data "aws_vpc" "default" {
    default = true
  }

  resource "aws_vpc_endpoint" "private-dynamodb" {
    vpc_id = "${data.aws_vpc.default.id}"
    service_name = "com.amazonaws.${var.region}.dynamodb"
    route_table_ids = ["${WHAT_SHOULD_I_PUT_HERE?}"]
    policy = <<POLICY
    {
    "Statement": [
        {
        "Action": "*",
        "Effect": "Allow",
        "Resource": "*",
        "Principal": "*"
        }
    ]
    }
    POLICY
  }

Я также проверил, как создается конечная точка с ручной настройкой, и я вижу, что с ней связана таблица маршрутизации со следующими настройками:

  • мой блок vpc cidr -> локальный
  • 0.0.0.0 / 0 -> интернет gw
  • com.amazonaws ... dynamodb -> vpce -...

поэтому я предполагаю, что должен реплицировать эквивалентную конфигурацию в моем ресурсе terraform, но на самом деле не знаю, как это сделать. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 23 июля 2019

Вместо создания своей собственной таблицы маршрутов, вы можете просто связать конечную точку с вашей таблицей маршрутов VPC по умолчанию, которую Terraform предоставляет через экспортированный атрибут VPC main_route_table_id.Вам необходимо связать его с конечной точкой следующим образом:

  resource "aws_vpc_endpoint_route_table_association" "private-dynamodb" {
    vpc_endpoint_id = "${data.aws_vpc.default.id}"
    route_table_id  = "${data.aws_vpc.default.main_route_table_id}"
  }
...