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 configure
Einstellungen, die in ~/.aws/credentials
den obigen Terraform-Variablendeklarationen vorgenommen werden.
Alles funktioniert einwandfrei, solange sich die Creds befinden, ~/.aws/credentials
aber 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/credentials
durch Ausführen neu aws configure
auffülle, funktioniert es wieder einwandfrei.
Ich verstehe nicht - wenn meine provider
Einstellung 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_PROFILE
oderAWS_DEFAULT_PROFILE
Umgebungsvariablen nicht festgelegt , wie sie ein Hinweis auf die AWS SDK sind , dass es in der Credentials - Datei aussehen sollte.