Как заставить Terraform читать файл AWS Credentials?
Я пытаюсь создать ведро AWS S3 с помощью terraform, и это мой код:
provider "aws" {
profile = "default"
region = "ap-south-1"
}
resource "aws_s3_bucket" "first_tf" {
bucket = "svk-pl-2909202022"
acl = "private"
}
Я вручную создал файл "Учетные данные" с помощью Блокнота, а также удалил расширение ".txt" с помощью Powershell и сохранил этот файл в
C:\Users\terraform\.aws
, и этот файл выглядит так:
[default]
aws_access_key_id=**************
aws_secret_access_key=************
Но когда я пытаюсь бежать
terraform plan
, Я получаю сообщение об ошибке
ОШИБКА: ошибка настройки Terraform AWS Provider: не найдены действительные источники учетных данных для Terraform AWS Provider
Затем я также попытался создать этот файл "Учетные данные", установив AWS CLI, я выполнил команду
aws configure --profile terraform
где
terraform
было мое имя пользователя. Итак, он попросил меня войти
aws_access_key_id
и
aws_secret_access_key
. и после ввода всех учетных данных я выполнил команду
terraform init
, который прошел успешно, но когда я побежал
terraform plan
, он снова показывает ошибку, в которой говорится:
ОШИБКА: ошибка настройки Terraform AWS Provider: не найдены действительные источники учетных данных для Terraform AWS Provider
5 ответов
При создании профиля вручную
provider "aws" {
region = "your region"
shared_credentials_file = "path_file_credentials like C:\Users\terraform\.aws\credentials"
profile = "profile_name"
}
Если вы не хотите размещать общий файл вручную
Нужно быть на этом пути
%USERPROFILE%.aws\credentials
provider "aws" {
region = "your region"
profile = "profile_name"
}
Если вы хотите поместить свои учетные данные в tf файл
provider "aws" {
region = "us-west-2"
access_key = "my-access-key"
secret_key = "my-secret-key"
}
Я потратил довольно много времени, пытаясь понять, как заставить Terraform читать ~ / .aws / credentials. Единственный вариант, который сработал для меня, - это указать переменную среды AWS_PROFILE, чтобы указать ее на конкретный раздел файла учетных данных.
AWS_PROFILE=prod terraform plan
или же
export AWS_PROFILE=prod
terraform plan
Тот факт, что shared_credentials_file и / или параметры профиля в разделе provider игнорируются, мне кажется ошибкой.
Вы должны создать настраиваемый раздел в файле учетных данных с помощью команды
aws configure --profile=prod
чтобы использовать такую переменную env.
Неправильный путь, по которому вы храните файл учетных данных.
C:\Users\ ваше-имя пользователя \.aws
Вы можете добавить эти файлы ниже в указанное выше место.
реквизиты для входа
[default]
aws_access_key_id = your access key
aws_secret_access_key = your secret key
config
[default]
region=ap-south-1
И вам не нужно ничего настраивать в terraform или python, если вы используете boto3. Terraform и boto3 автоматически найдут нужный файл учетных данных.
если у вас уже установлен AWS cli локально, перейдите к пути к файлу конфигурации:
%USERPROFILE%\.aws\credentials
Обновите учетные данные, как показано ниже:
[default]
aws_access_key_id = "xxxxx"
aws_secret_access_key = "xxxxx"
region= us-east-1