Как заставить 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