
AWS EKS でホストされている Kubernetes の環境を破棄したいと考えていましたDEV
。リソースには、インフラストラクチャ部分とアプリケーション部分の 2 つの部分があります。インフラのデプロイ/破棄にはTerraform
/を使用し、アプリケーションのデプロイ/破棄には / を使用します。複数のポッドが実行されており、 を実行してリリースを破棄できます。ただし、インフラを破棄するときにエラーが発生しました。私が行ったことは次のとおりです。Terragrunt
helm
helm uninstall <release-name>
インフラを破壊するために、次を実行しました:ENV=DEV make destroy
このコマンドに対して、次が返されます:
cd infra/DEV && terragrunt destroy
Remote state S3 bucket aib-iac-tf-state does not exist or you don't have permissions to access it. Would you like Terragrunt to create it? (y/n)
これに対して、両方を試してみましたy
が、n
次のエラーが返されます。
make: *** [Makefile:30: destroy] Error 1
内部のリソースを作成/削除するために、ルート ユーザーによってアクセスが変更されたと仮定しましたがS3 Bucket
、そうではありませんでした。 はS3 Bucket
aib-iac-tf-state
ストレージ内に存在します。
*Makefile*
次に、エラーに従って 30 行目の内部を確認しました。29 行目と 30 行目の内容は次のとおりです。
destroy:
cd ${INFRA_DIR}/${ENV} && terragrunt destroy ${TF_VARS}
まだリソースを破棄できません。ご協力いただければ幸いです。
答え1
Terraform からのエラーは、リモート状態バケットが存在しないことを通知しており、そのため、リモート状態を読み取って何を破棄するかを理解できません。これは、Make 経由で使用しているラッパーの構成ミスのようです。
可能であれば、.tf
ファイル内で次のようなブロックを確認してください。
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
また、バケットの名前が正しいことを確認してください。適切なデータを保持するバケットを見つけるには、AWS アカウントと比較する必要がある場合があります。
そのようなものが見つからない場合は、ローカルワークスペースで.tfstate
ファイルを確認してから、backend
ブロックを削除し、リモートバックエンドではなくローカル状態ファイルが使用されるようにします。人によって違う- Terraform のスキルを持つ同僚を見つけて、確認してもらうのもいいでしょう。
TL;DR - 私には、これはラッパーのバグか、何かが順番通りに削除されなかったように聞こえます。