Terraform是否支持DynamoDB的AWS PrivateLink?如何配置接口端点?
Terraform对DynamoDB AWS PrivateLink及Interface Endpoint的支持与配置
一、Terraform是否支持DynamoDB的AWS PrivateLink?
Terraform完全支持通过AWS Provider配置DynamoDB的AWS PrivateLink,具体是通过创建VPC Interface Endpoint来实现,该资源可让VPC内的私有资源无需公网访问即可连接DynamoDB。
二、Terraform配置DynamoDB Interface Endpoint的步骤与示例
核心配置步骤
- 确保环境已存在目标VPC及至少一个私有子网(Interface Endpoint需部署在私有子网中)
- 创建VPC Interface Endpoint,指定DynamoDB对应的服务名称
- 配置安全组,允许VPC内的资源访问该Endpoint的443端口(DynamoDB默认端口)
- 可选:配置Route53私有托管区,让VPC内资源通过DynamoDB标准私有域名访问
Terraform配置示例
# 引用已存在的VPC、私有子网和安全组 data "aws_vpc" "existing" { id = "vpc-xxxxxx" # 替换为你的VPC ID } data "aws_subnet_ids" "private" { vpc_id = data.aws_vpc.existing.id filter { name = "tag:Tier" values = ["Private"] # 替换为你的私有子网标签 } } data "aws_security_group" "endpoint_sg" { name = "dynamodb-endpoint-sg" # 替换为你的安全组名称 } # 创建DynamoDB的Interface Endpoint resource "aws_vpc_endpoint" "dynamodb" { vpc_id = data.aws_vpc.existing.id service_name = "com.amazonaws.${data.aws_region.current.name}.dynamodb" vpc_endpoint_type = "Interface" subnet_ids = data.aws_subnet_ids.private.ids security_group_ids = [data.aws_security_group.endpoint_sg.id] # 启用私有DNS,让VPC内资源直接用dynamodb.<region>.amazonaws.com访问 private_dns_enabled = true tags = { Name = "DynamoDB-Interface-Endpoint" } } # 可选:自定义私有域名解析(若默认私有DNS不满足需求) resource "aws_route53_zone" "dynamodb_private" { name = "dynamodb.${data.aws_region.current.name}.amazonaws.com" vpc { vpc_id = data.aws_vpc.existing.id } } resource "aws_route53_record" "dynamodb_endpoint" { zone_id = aws_route53_zone.dynamodb_private.zone_id name = "dynamodb.${data.aws_region.current.name}.amazonaws.com" type = "A" alias { name = aws_vpc_endpoint.dynamodb.dns_entry[0].dns_name zone_id = aws_vpc_endpoint.dynamodb.dns_entry[0].hosted_zone_id evaluate_target_health = false } }
关键说明
service_name需根据AWS区域调整,格式为com.amazonaws.<region>.dynamodbprivate_dns_enabled = true会自动在VPC内配置私有DNS解析,无需手动配置Route53即可用标准域名访问- 安全组需放行VPC内资源到Endpoint 443端口的流量
内容的提问来源于stack exchange,提问作者mon
相关产品推荐
相关产品推荐

