Ich habe eine vorhandene Infrastruktur in Terraform und benutze sie seit einer Weile. Vor kurzem hatte ich die AWS-Anmeldeinformationen meines lokalen Laptops (die darin gespeicherten Creds ~/.aws/credentials) ausgetauscht und es funktionierte nicht mehr, bis ich diese Anmeldeinformationen zurückgesetzt hatte.
Das Problem ist, dass ich die Creds in der Terraform-Quelle selbst deklariere, aber es scheint, dass sie überhaupt nicht verwendet werden.
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"
}
Die Zugriffs-ID-Berechtigungen sind 100% gut. Ich verwende dieselbe Konto-ID und denselben geheimen Schlüssel für die aws configureEinstellungen, die in ~/.aws/credentialsden obigen Terraform-Variablendeklarationen vorgenommen werden.
Alles funktioniert einwandfrei, solange sich die Creds befinden, ~/.aws/credentialsaber sobald die Anmeldeinformationen auf Betriebssystemebene verschwunden sind (dh rm ~/.aws/credentials), wird beim Versuch, Terraform-Vorgänge auszuführen, Folgendes angezeigt 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".
Wenn ich das ~/.aws/credentialsdurch Ausführen neu aws configureauffülle, funktioniert es wieder einwandfrei.
Ich verstehe nicht - wenn meine providerEinstellung explizit die Anmeldeinformationen deklariert, die im Terraform-Quellcode verwendet werden sollen, warum ist meine AWS-Konfiguration auf Betriebssystemebene überhaupt wichtig?
Wie kann ich Terraform dazu bringen, nur die in meiner Terraform-Konfiguration definierten Creds zu verwenden und zu ignorieren, was in meinem Betriebssystem-Benutzerprofil enthalten ist?
Bearbeiten, es ist Terraform v0.11.7
Bearbeiten: Bitte beachten Sie, dass ich versuche, das Problem zu lösen, warum die statisch deklarierten Creds in der Anbieterdeklaration nicht verwendet werden. Keine Suche nach alternativen Methoden oder Problemumgehungen. Vielen Dank.
AWS_PROFILEoderAWS_DEFAULT_PROFILEUmgebungsvariablen nicht festgelegt , wie sie ein Hinweis auf die AWS SDK sind , dass es in der Credentials - Datei aussehen sollte.