У меня есть инфраструктура в Terraform, и я использую ее некоторое время. Недавно я поменял учетные данные AWS на своем локальном ноутбуке (хранящиеся в нем кредиты ~/.aws/credentials
), и он перестал работать, пока я не переустановил эти учетные данные обратно.
Проблема в том, что я объявляю кредиты в самом источнике Terraform, но, похоже, он их вообще не использует.
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"
}
Разрешения ID доступа на 100% хороши. Я использую один и тот же идентификатор учетной записи и секретный ключ для обеих aws configure
настроек, которые используются в ~/.aws/credentials
описаниях переменных Terraform, указанных выше.
Все работает нормально, пока есть кредиты, ~/.aws/credentials
но как только учетные данные уровня ОС ушли (т.е. rm ~/.aws/credentials
), я получаю следующее при попытке запуска операций Terraform, например 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".
Если я заново заполню ~/.aws/credentials
, запустив, aws configure
он снова будет работать нормально.
Я не понимаю - если мой provider
параметр явно объявляет учетные данные для использования внутри исходного кода Terraform, почему моя конфигурация AWS на уровне ОС вообще имеет значение?
Как я могу заставить Terraform использовать только кредиты, определенные в моей конфигурации Terraform, и игнорировать то, что находится в моем профиле пользователя ОС?
Изменить это Terraform v0.11.7
Изменить: Обратите внимание, что я пытаюсь решить вопрос о том, почему статически объявленные кредиты не используются в декларации поставщика. Не ищу альтернативных методов или обходных путей. Спасибо.
AWS_PROFILE
илиAWS_DEFAULT_PROFILE
переменные не заданы, поскольку они являются подсказкой для AWS SDK, которую он должен искать в файле учетных данных.