🕌

Terraform plan/apply実行時にタイムアウト

2023/01/27に公開

Terraform にて plan 実行時、いかのようにタイムアウトが発生しました。

エラー内容

sts:GetCallerIdentity で 再試行回数 max_attemptsが 25回(多っ!) を超過したため、エラーが発生しました。

$ terraform plan 
╷
│ Error: configuring Terraform AWS Provider: error validating provider credentials: error calling sts:GetCallerIdentity: operation error STS: GetCallerIdentity, exceeded maximum number of attempts, 25, https response error StatusCode: 0, RequestID: , request send failed, Post "https://sts.ap-northeast-1.amazonaws.com/": dial tcp: lookup sts.ap-northeast-1.amazonaws.com on 192.168.0.1:53: server misbehaving
│ 
│   with provider["registry.terraform.io/hashicorp/aws"],
│   on provider.tf line 17, in provider "aws":17: provider "aws" {
│ 
╵

因みに、 CLIでの get-caller-identity や、 cdk deploy は普通に実行できる。

原因

エラー内容からserver misbehavingとあったため、単純に名前解決できていないと思い、ルーターのパブリックDNSをGoogle社の運営する8.8.8.8に設定したところ、うまくいきました。
つい先日私事ではありますがルーターを新調したことで、DNSの設定がこれといってなされていなかった & /etc/resolve.confも、特に設定されておらずだったため名前解決できなかったことが挙げられます。

対処としては、ルーターのプライマリ/セカンダリDNSを、パブリックDNSを提供している各社のIPアドレスにするなり、
または、 /etc/resolve.conf に上記のようなパブリックDNSをnameserverとして追加すれば良いかと思います。

結論

名前解決できずにPlanが失敗することもあるため、ネットワーク環境も切り分け対象として片隅におこうとおもいました。

但し、CLIやCDKではできて、Terraformではダメだったことが未だに謎。。

Discussion