Terraform에 기존 인프라가 있으며 한동안 사용하고 있습니다. 최근에 로컬 랩톱의 AWS 자격 증명 (에 저장된 자격 증명)을 교체했으며 자격 증명을 ~/.aws/credentials
다시 설정할 때까지 작동이 중지되었습니다.
문제는 Terraform 소스 자체에서 cred를 선언하고 있지만 전혀 사용하지 않는 것입니다.
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 % 양호합니다. 나는 모두 동일한 계정 ID와 비밀 키를 사용하고 aws configure
들어갈 설정 ~/.aws/credentials
I 위 Terraform 변수 선언에 나처럼.
cred가있는 한 모든 것이 잘 작동~/.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
다시 잘 작동합니다.
이해하지 못합니다. 설정에서 Terraform 소스 코드 내에서 사용할 자격 증명을 명시 적으로 선언하는 경우 provider
OS 수준 AWS 구성이 왜 중요한가요?
Terraform이 내 Terraform 구성에 정의 된 cred 만 사용하도록하고 OS 사용자 프로파일의 내용을 무시하도록하려면 어떻게해야합니까?
편집하다 Terraform v0.11.7
편집 : 정적으로 선언 된 creds가 공급자 선언에 사용되지 않는 이유에 대한 문제를 해결하려고합니다. 대체 방법이나 해결 방법을 찾지 않습니다. 감사.
AWS_PROFILE
또는AWS_DEFAULT_PROFILE
환경 변수가 설정되어 있지 않은지 확인하십시오 .