地形节流路线53



有人在将Terraform与AWS Route53记录一起使用时遇到过Terraform被节流并且速度非常慢的问题吗?

我已经启用调试模式并得到这个:

2018-11-30T14:35:08.467Z [DEBUG] plugin.terraform-provider-aws_v1.36.0_x4: 2018/11/30 14:35:08 [DEBUG] [aws-sdk-go] <?xml  version="1.0"?>
2018-11-30T14:35:08.467Z [DEBUG] plugin.terraform-provider aws_v1.36.0_x4: <ErrorResponse xmlns="https://route53.amazonaws.com/doc/2013-04-01/"><Error><Type>Sender</Type><Code>Throttling</Code><Message>Rate exceeded</Message></Error><RequestId>REQUEST_ID</RequestId></ErrorResponse>
2018-11-30T14:35:08.518Z [DEBUG] plugin.terraform-provider-aws_v1.36.0_x4: 2018/11/30 14:35:08 [DEBUG] [aws-sdk-go] DEBUG: Validate Response route53/ListResourceRecordSets failed, will retry, error Throttling: Rate exceeded

Terraform只需要>1h就可以完成简单的Plan,而这通常需要<5分钟。

我的基础设施是这样组织的:

alb.tf:

module "ALB" 
{ source = "modules/alb" }

模块/ab/alb.tf:

resource "aws_alb" "ALB" 
{ name = "alb" 
subnets = var.subnets ...
}

模块/alb/dns.tf

resource "aws_route53_record" "r53" {
count     =  "${length(var.cnames_generic)}"
zone_id   = "HOSTED_ZONE_ID"
name      = "${element(var.cnames_generic_dns, count.index)}.${var.environment}.${var.domain}"
type      = "A"
alias {
name    = "dualstack.${aws_alb.ALB.dns_name}"
zone_id = "${aws_alb.ALB.zone_id}"
evaluate_target_health = false
}
}

modules/alb/variables.tf:

variable "cnames_generic_dns" {
type = "list"
default = [
"hostname1",
"hostname2",
"hostname3",
"hostname4",
"hostname5",
"hostname6",
"hostname7",
...
"hostname25"
]
}

所以我使用模块来配置Terraform,模块内部有资源(ALB,DNS..(

然而,看起来Terraform正在描述HostedZone中的每一个DNS资源(CNAME和A记录,我有大约1000条(,这导致了它的Throttle?

Terraform v0.10.7
Terraform AWS provider version = "~> 1.36.0"

这是很多DNS记录!AWS API限制你的部分原因。

首先,我建议升级您的AWS提供商。v1.36已经相当旧了,从那以后已经修复了很多错误。

(下一步,但不是绝对必要的,是使用TF v0.11.x,如果可能的话。(

在您的AWS Provider块中,将max_retries增加到至少10,并尝试使用更高的值。

然后,使用Terraform的--parallelism标志来限制TF的并发率。试着为初学者设置为5。

最后,启用Terraform的调试模式,看看它是否能为您提供更多有用的信息。

希望这能有所帮助!

通过执行以下操作可以解决问题:

  • 由于我们通过添加一个资源,然后变量/迭代来重新构建DNS记录,这可能导致Terraform不断查询所有DNS记录
  • 我们决定离开Terraform来完成刷新(花了4小时和大量的节流(
  • 手动删除R53中我们正在执行的工作区的DNS记录
  • 注释掉Terraform DNS资源,让它也从状态文件中删除
  • 取消对Terraform DNS的注释并重新运行它,以便它再次创建它们
  • 运行Terraform计划再次顺利

升级到新的AWS提供商后,Terraform AWS Route53的节流问题似乎完全解决了。我们在init.TF:中将TF AWS提供商更新为1.54.0

version = "~> 1.54.0"

以下是关于这个问题的更多细节以及Hashicorp工程师的建议:

https://github.com/terraform-providers/terraform-provider-aws/issues/7056

相关内容

  • 没有找到相关文章

最新更新