使用Terraform配置Route53时遇Access denied权限问题求助
问题分析与解决:Route53 Alias记录创建时AccessDenied错误
核心错误点
你的Terraform代码存在两处关键参数配置错误,这是导致AccessDenied的根本原因:
Route53记录的托管区域ID配置错误
当前代码中aws_route53_record.alb_dns的zone_id设为aws_alb.alb.zone_id,这是将ALB的区域ID作为Route53记录的托管区域ID,完全不符合逻辑——Route53记录必须归属你创建的test.cloud托管区域,而非ALB所在的AWS区域。Alias块的目标区域ID配置错误
别名记录的zone_id需要指向目标资源(ALB)的区域ID,但你错误地引用了Route53托管区域资源本身,正确的取值应为ALB的zone_id属性。
修复后的完整代码
# 创建应用负载均衡 resource "aws_alb" "alb" { name = "ALB-Terraform" internal = false load_balancer_type = "application" security_groups = [aws_security_group.ALB_sg.id] ip_address_type = "ipv4" subnets = ["subnet-X", "subnet-Y", "subnet-Z"] tags = { environment = "Test" } } # 创建Route53托管区域 resource "aws_route53_zone" "test_zone" { name = "test.cloud" } # 为ALB创建Route53 Alias类型记录 resource "aws_route53_record" "alb_dns" { zone_id = aws_route53_zone.test_zone.zone_id name = "test.cloud" type = "A" alias { name = aws_alb.alb.dns_name zone_id = aws_alb.alb.zone_id evaluate_target_health = true } }
错误原因解释
你原代码中错误地将Route53记录的托管区域指定为ALB的区域ID,导致Terraform尝试访问AWS托管的公共区域(不属于你的账户),而你的TF_user没有权限访问这些AWS自有资源,因此触发403 AccessDenied错误。修正参数后,请求会正确指向你创建的test.cloud托管区域,权限验证即可正常通过。
内容的提问来源于stack exchange,提问作者Ondřej Halata
相关产品推荐
相关产品推荐

