Terraform の 500 エラー:原因と解決策

冒頭まとめ Terraform の実行中に現れる 500 Internal Server Error は、手元で動いている Terraform 自身の不具合ではなく、Terraform が通信している相手側のサーバー内部エラーです。Terraform は多数のリモート API のクライアントであり、相手は大きく3つに分かれます。plan や apply の最中にリソースを操作するクラウドプロバイダーの API(原因1)、state の保存や取得、リモート実行を担うバックエンド(HCP Terraform など。原因2)、そして terraform init でプロバイダーやモジュールを取得する Terraform Registry(原因3)です。500の調査の第一歩は、エラーメッセージに含まれる URL と、どの段階で失敗したかを読んで、この3つのどれが相手かを特定することです。 境界も先に押さえておくと迷いません。実行アカウントの権限不足は、クラウド側から 403 系のアクセス拒否(AWS なら AccessDenied や UnauthorizedOperation)として返り、500にはなりません。AWS のスロットリングは ThrottlingException(HTTP では 400 として現れることもあります)や 429 で、プロバイダーが自動で再試行する対象です。また、TERRAFORM CRASH という見出しとスタックトレースが出る異常終了は、HTTP の500ではなく Terraform 本体のバグであり、調査の場所がまったく異なります。 エラーの概要 Terraform の500は、相手ごとに異なる文言で現れます。いずれもメッセージの中に相手を特定する手がかりが含まれています。 クラウドプロバイダーの API が相手の場合、リソース操作のエラーとして表示され、リクエスト先のエンドポイントが含まれます。 Error: creating EC2 Instance: 500 Internal Server Error on main.tf line 12, in resource "aws_instance" "example": バックエンドが相手の場合の実例は、HashiCorp の公式文書(Terraform Enterprise の障害復旧ガイド)にそのまま掲載されています。リモートバックエンドから state を取得できなかったケースです。 ...

2026年1月1日 · ErrorLog