Как реализовать экспорт значений в терраформе

Я попытался создать простой пример в среде AWS. Вначале я экспортирую 2 значения:

export AWS_ACCESS_KEY_ID= something
export AWS_SECRET_ACCESS_KEY= something

После этого я написал простой код.

provider "aws" {
  region = "us-east-1"
  access_key = AWS_ACCESS_KEY_ID
  secret_key = AWS_SECRET_ACCESS_KEY
}

resource "aws_instance" "example" {
  ami = "ami-40d28157"
  instance_type = "t2.micro"

  tags = {
    Name = "terraform-example"
  }
}

Когда я определяю значения вместо параметров AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, все работает нормально, но с предоставленным кодом я вижу следующую ошибку

on main.tf line 4, in provider "aws":
   4:   secret_key = AWS_SECRET_ACCESS_KEY

A reference to a resource type must be followed by at least one attribute
access, specifying the resource name.

Какие-нибудь идеи, как решить эту проблему?

Вам необходимо определить переменные для двух ключей и указать значения переменных при запуске, например. terraform apply   —  person O.Man    schedule 27.12.2020

Обратите внимание, что провайдер aws на самом деле внутренне уважает эти (и другие) переменные среды, и вам ничего не нужно делать вручную в этом конкретном случае передачи учетных данных среды aws.   —  person O.Man    schedule 27.12.2020

См. также:  Ошибка AWS Lambda: не удалось распаковать загруженный файл
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. O.Man

    Вам не нужно ничего делать. Как объясняется в terraform документации по аутентификации для поставщика AWS, terraform будет автоматически использовать учетные данные в таком порядке:

    • Статические учетные данные
    • Переменные среды
    • Общие учетные данные / файл конфигурации
    • CodeBuild, роли ECS и EKS
    • Служба метаданных экземпляра EC2 (IMDS и IMDSv2)

    Итак, как только вы экспортируете свои ключи (убедитесь, что экспортировали их правильно):

    export AWS_ACCESS_KEY_ID="something"
    export AWS_SECRET_ACCESS_KEY="something"
    

    в вашем файле конфигурации, который вы просто использовали бы (пример см. в docs):

    provider "aws" {
      region = "us-east-1"
    }
    
    resource "aws_instance" "example" {
      ami = "ami-40d28157"
      instance_type = "t2.micro"
    
      tags = {
        Name = "terraform-example"
      }
    }
    
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: