J'ai une infrastructure existante dans Terraform et je l'utilise depuis un certain temps. Récemment, j'avais échangé les informations d'identification AWS de mon ordinateur portable local (les crédits stockés dans ~/.aws/credentials
) et il a cessé de fonctionner jusqu'à ce que je réinitialise ces informations d'identification.
Le problème est que je déclare les crédits dans la source Terraform elle-même, mais il ne semble pas du tout les utiliser.
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"
}
Les autorisations d'accès ID sont 100% bonnes. J'utilise le même ID de compte et la même clé secrète pour les aws configure
paramètres qui entrent ~/.aws/credentials
comme je le suis dans les déclarations de variables Terraform ci-dessus.
Tout fonctionne bien tant que les identifiants sont en place, ~/.aws/credentials
mais dès que les informations d'identification au niveau du système d'exploitation ont disparu (c'est-à-dire rm ~/.aws/credentials
), j'obtiens ce qui suit lorsque j'essaie d'exécuter des opérations Terraform, telles que 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".
Si je re-remplis le ~/.aws/credentials
en l'exécutant, aws configure
cela fonctionnera à nouveau correctement.
Je ne comprends pas - si mon provider
paramètre déclare explicitement les informations d'identification à utiliser dans le code source Terraform, pourquoi ma configuration AWS au niveau du système d'exploitation est-elle importante?
Comment puis-je faire en sorte que Terraform utilise uniquement les crédits définis dans ma configuration Terraform et ignore ce qui se trouve dans mon profil utilisateur de système d'exploitation?
Modifier, c'est Terraform v0.11.7
Edit: Veuillez noter que j'essaie de résoudre le problème sur la raison pour laquelle les crédits déclarés statiquement ne sont pas utilisés dans la déclaration du fournisseur. Ne pas rechercher d'autres méthodes ou solutions de contournement. Merci.
AWS_PROFILE
ouAWS_DEFAULT_PROFILE
ne sont pas définies, car elles indiquent au kit SDK AWS qu'il doit rechercher dans le fichier d'informations d'identification.