Ho un'infrastruttura esistente in Terraform e la uso da un po 'di tempo. Di recente ho scambiato le credenziali AWS del mio laptop locale (le credenziali archiviate ~/.aws/credentials
) e ha smesso di funzionare fino a quando non ho ripristinato quelle credenziali.
Il problema è che sto dichiarando i crediti nella fonte Terraform stessa, ma sembra che non li stia affatto usando.
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"
}
Le autorizzazioni dell'ID di accesso sono valide al 100%. Sto usando lo stesso ID account e la stessa chiave segreta sia per le aws configure
impostazioni in ~/.aws/credentials
cui mi trovo che nelle dichiarazioni di Terraform sopra riportate.
Tutto funziona bene fintanto che le ~/.aws/credentials
credenziali sono presenti, ma non appena le credenziali a livello di sistema operativo sono andate (ovvero rm ~/.aws/credentials
) ottengo quanto segue quando provo a eseguire operazioni Terraform, come 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".
Se ripopolo ~/.aws/credentials
eseguendolo aws configure
funzionerà di nuovo bene.
Non capisco: se la mia provider
impostazione dichiara esplicitamente le credenziali da utilizzare all'interno del codice sorgente Terraform, perché la mia configurazione AWS a livello di sistema operativo è importante?
Come posso fare in modo che Terraform usi solo i crediti definiti nella mia configurazione Terraform e ignori ciò che è nel mio profilo utente del sistema operativo?
Modifica, lo è Terraform v0.11.7
Modifica: si noti che sto cercando di risolvere il problema sul motivo per cui i crediti dichiarati staticamente non vengono utilizzati nella dichiarazione del fornitore. Non cercare metodi alternativi o soluzioni alternative. Grazie.
AWS_PROFILE
oAWS_DEFAULT_PROFILE
non siano impostate in quanto suggeriscono all'SDK AWS che dovrebbe apparire nel file delle credenziali.