我有一个在AWS VPC中运行的Lambda函数。此Lambda需要访问RDS和DynamoDB,因此需要配置VPC端点才能访问DynamoDB。如on Amazon's blog here所述,我设法使用手动配置使其工作,但是我正在努力使用Terraform将等效的基础架构定义为代码。
我知道我应该在Terraform(文档here)中定义一个aws_vpc_endpoint
,但是在为其配置路由表时我有些迷茫。
到目前为止,这是我所拥有的,我不确定这是正确的,并且在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
}
我还检查了如何通过手动配置创建端点,并且看到它具有具有以下设置的关联路由表:
所以我假设我应该在自己的terraform资源中复制一个等效的配置,但是实际上不知道如何执行该配置。任何帮助表示赞赏!
答案 0 :(得分: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}"
}