Как настроить конечную точку 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}"
}