Terraformに既存のインフラストラクチャがあり、しばらく使用しています。最近、ローカルラップトップのAWS認証情報(に保存されている認証情報)を交換しましたが、認証情報~/.aws/credentials
を再設定するまで機能しなくなりました。
問題は、Terraformソース自体でクレデンシャルを宣言していることですが、それをまったく使用していないようです。
terraform {
backend "s3" {
bucket = "example_tf_states"
key = "global/vpc/us_east_1/example_state.tfstate"
encrypt = true
region = "us-east-1"
}
}
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}
variable "access_key" {
default = "<hidden_for_stack_exchange_post>"
}
variable "secret_key" {
default = "<hidden_for_stack_exchange_post>"
}
variable "region" {
default = "us-east-1"
}
アクセスIDのアクセス許可は100%良好です。上記のTerraform変数宣言と同じように、両方のaws configure
設定に同じアカウントIDと秘密鍵を使用しています~/.aws/credentials
。
~/.aws/credentials
資格情報が存在する限り、すべてが正常に機能しますが、OSレベルの資格情報が失われると(つまりrm ~/.aws/credentials
)、Terraform操作を実行しようとすると、次のようになりますterraform plan
。
Failed to load backend:
Error configuring the backend "s3": No valid credential sources found for AWS Provider.
Please see https://terraform.io/docs/providers/aws/index.html for more information on
providing credentials for the AWS Provider
Please update the configuration in your Terraform files to fix this error.
If you'd like to update the configuration interactively without storing
the values in your configuration, run "terraform init".
を実行してを再設定すると、再び正常に~/.aws/credentials
動作aws configure
します。
私は理解していません- 私のprovider
設定がTerraformソースコード内で使用する資格情報を明示的に宣言している場合、なぜOSレベルのAWS構成がまったく重要なのですか?
TerraformにTerraform構成で定義された資格情報のみを使用させ、OSユーザープロファイルの内容を無視するにはどうすればよいですか?
編集、それは Terraform v0.11.7
編集:静的に宣言されたクレデンシャルがプロバイダー宣言で利用されていない理由に関する問題を解決しようとしていることに注意してください。代替方法や回避策を探していません。ありがとう。
AWS_PROFILE
またはAWS_DEFAULT_PROFILE
環境変数が設定されていないことを確認してください。これらは、認証情報ファイルで調べる必要があるAWS SDKへのヒントです。