Мне нужно, чтобы серверная часть terraform s3 использовала одну корзину для моей производственной учетной записи AWS, а другую корзину - для моей учетной записи AWS для разработки. Нам это нужно, потому что мы не можем разрешить пользователям из учетной записи AWS для разработки получить доступ к корзине s3 в производственной учетной записи AWS. Имена сегментов S3 должны быть глобально уникальными, поэтому поле имени сегмента не может быть одинаковым.
Я пробовал использовать здесь переменную, но ошибка переменных в бэкэндах terraform. Это очень востребованная функция, и для нее существует проблема с GitHub, но она была открыт в течение 4 лет, и, похоже, нет никаких планов по добавлению этой функции, поэтому мне нужно обходное решение. Одно предложение исходит из той же проблемы с GitHub. Предлагается использовать источник данных удаленного состояния terraform. К сожалению, это не работает. Вот что я пробовал:
// backend.tf
terraform {
backend "s3" {}
}
data terraform_remote_state "state" {
backend = "s3"
config {
bucket = var.aws_account == "123456789000" ? "my-prod-bucket" : "my-dev-bucket"
key = "apps/main-stack.tfstate"
region = "us-east-1"
}
}
Ни одно из значений не используется, и предлагается ввести все их вручную.
$ terraform init
Initializing modules...
Initializing the backend...
bucket
The name of the S3 bucket
Enter a value:
Я поискал другие решения, но пока безуспешно. Кто-нибудь знает, как это исправить?