Eu tenho infraestrutura existente no Terraform e a uso há algum tempo. Recentemente, troquei as credenciais da AWS do meu laptop local (os creds armazenados ~/.aws/credentials
) e ele parou de funcionar até que eu as reconfigurasse novamente.
O problema é que estou declarando os creds na própria fonte Terraform, mas parece que não os estou 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"
}
As permissões de identificação de acesso são 100% boas. Estou usando o mesmo ID de conta e chave secreta para as aws configure
configurações que entram nas ~/.aws/credentials
declarações de variáveis Terraform acima.
Tudo funciona bem desde que os creds estejam, ~/.aws/credentials
mas assim que as credenciais no nível do sistema operacional desaparecem (ou seja rm ~/.aws/credentials
), recebo o seguinte ao tentar executar as operações do 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".
Se eu preencher novamente o ~/.aws/credentials
executando, aws configure
ele funcionará bem novamente.
Não estou entendendo - se minha provider
configuração está declarando explicitamente as credenciais para usar dentro do código-fonte do Terraform, por que minha configuração da AWS no nível do SO é importante?
Como posso fazer com que o Terraform use apenas os creds definidos na minha configuração do Terraform e ignore o que está no meu perfil de usuário do SO?
Editar, é Terraform v0.11.7
Edit: Observe que estou tentando resolver o problema de por que os cleds declarados estaticamente não estão sendo utilizados na declaração do provedor. Não procura métodos alternativos ou soluções alternativas. Obrigado.
AWS_PROFILE
ouAWS_DEFAULT_PROFILE
não estão definidas, pois são uma dica para o AWS SDK de que ele deve procurar no arquivo de credenciais.