Tengo infraestructura existente en Terraform y la he estado usando por un tiempo. Recientemente cambié las credenciales de AWS de mi computadora portátil local (los créditos almacenados ~/.aws/credentials
) y dejó de funcionar hasta que restablecí esas credenciales.
El problema es que estoy declarando los créditos en la fuente Terraform en sí, pero parece que no los está usando en absoluto.
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"
}
Los permisos de ID de acceso son 100% válidos. Estoy usando la misma ID de cuenta y clave secreta, tanto para la aws configure
configuración que entra ~/.aws/credentials
como en las declaraciones de variables de Terraform anteriores.
Todo funciona bien siempre y cuando las credenciales estén dentro, ~/.aws/credentials
pero tan pronto como desaparezcan las credenciales del nivel del sistema operativo (es decir rm ~/.aws/credentials
), obtengo lo siguiente cuando intento ejecutar operaciones de Terraform, como 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 vuelvo a llenar el ~/.aws/credentials
archivo ejecutándolo aws configure
, funcionará bien nuevamente.
No entiendo: si mi provider
configuración declara explícitamente las credenciales para usar dentro del código fuente de Terraform, ¿por qué es importante mi configuración de AWS a nivel de sistema operativo?
¿Cómo puedo hacer que Terraform solo use los créditos definidos en mi configuración de Terraform e ignore lo que hay en mi perfil de usuario del sistema operativo?
Editar, es Terraform v0.11.7
Editar: tenga en cuenta que estoy tratando de resolver el problema de por qué los créditos declarados estáticamente no se utilizan en la declaración del proveedor. No busco métodos alternativos o soluciones alternativas. Gracias.
AWS_PROFILE
oAWS_DEFAULT_PROFILE
variables de entorno no se establecen como esas son una pista para el SDK de AWS que debe buscar en el archivo de credenciales.