AWS

【Terraform】 AWSの認証でError: No valid credential sources foundと出た際の回避方法

TFのアイキャッチ
hama-matcha

はじめに

公式を見ながら.tfvarsにAWSのcredential情報を記載し、

TerraformでS3をバックエンドとして定義して

意気揚々と terraform init を叩くと下記のようなエラーになり困ったため備忘録として書き残します。

│ Error: No valid credential sources found
│ 
│ Please see
│ https://www.terraform.io/docs/language/settings/backends/s3.html
│ for more information about providing credentials.
│ 
│ Error: failed to refresh cached credentials, no EC2 IMDS role
│ found, operation error ec2imds: GetMetadata, request canceled,
│ context deadline exceeded

回避策

PJ内に.envファイルを作成してsource .envで環境変数を設定しました。
苦し紛れの回避策ですが、terraform init は通ります。

.gitignore.env ファイルも除外しておく必要があります。

#.env
export AWS_ACCESS_KEY_ID="access_key"
export AWS_SECRET_ACCESS_KEY="secret_key"
#.gitignore
.env
provider "aws" {
  region     = "ap-northeast-1"
}

他の情報

下記の情報があったためまとめておきます。

これ以上に解決策が見つからなかったので .tfvars での管理にこだわりが無ければ .env を利用した環境変数での読み込みが良さそうですね!

さいごに

TerraformでAWSを触るぞ〜と意気込んだら早速コケて悲しい思いをしたので次からはコケないよう注意しつつ、同じように悩んでいる人に届いたら嬉しいです。

また、他のsecret情報は問題なく読み込めるので terraform fmt を掛けるために動くものは .tfvars へ記載し、動作が怪しい変数は .env へと記載したら良いと思いました〜

.tfvars/.envともに git管理すべきでは無いので .gitignoreへの追加を忘れずにお願いします!

以上hamaでした〜

_hama
_hama
ほのぼのデータエンジニア
記事URLをコピーしました