Как настроить конечную точку VPC для доступа к DynamoDB с помощью Terraform?

У меня есть лямбда-функция, запущенная в 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, но на самом деле не знаю, как это сделать. Любая помощь приветствуется!

0 ответов

Вместо того чтобы создавать собственную таблицу маршрутов, вы можете просто связать конечную точку со своей таблицей маршрутов 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}"
  }
Другие вопросы по тегам