Я использую Terraform в действии GitHub для запуска экземпляра RDS на AWS. При создании экземпляра я получаю следующее сообщение:
Error: Failed to get existing workspaces: S3 bucket "***" does not exist.
Это происходит потому, что я использую корзину для хранения информации о состоянии и создаю ее с помощью внутренних клавиш Terraform.
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.40.0"
}
}
required_version = ">= 1.7.4"
backend "s3" {
bucket = "removed_for_question"
key = "removed_for_question"
region = "removed_for_question"
}
}
После некоторых исследований я узнал, что это называется проблемой куриного яйца в Terraform? Я пробовал решить эту проблему множеством способов, но, к сожалению, я новичок в большинстве перечисленных мной технологий и, похоже, не могу найти решение, которое решило бы мою конкретную проблему.
Как создать корзину S3 в действии Github до запуска создания RDS Terraform, которому понадобится эта корзина. Я знаю, что вы также можете использовать AWS CLI для его создания, но я не уверен в том, что это лучший метод.
Как индустрия решает эту проблему, я с трудом могу поверить, что каждый создает корзину вручную.





Ваш комментарий звучит так, будто вы думаете, что объявление бэкэнда S3 на самом деле приведет к тому, что Terraform создаст корзину S3:
Я использую корзину для хранения информации о состоянии и создаю ее с помощью внутренних клавиш Terraform.
Это не относится к делу. Terraform не создаст корзину S3, которую вы используете в качестве серверной части. Прежде чем использовать этот код Terraform, вам необходимо создать корзину S3 самостоятельно. Обойти это невозможно. Если вы хотите, чтобы этот бакет S3 управлялся Terraform, вам пришлось бы выделить его в отдельный шаблон Terraform, который вы запускаете перед этим кодом Terraform, но тогда у вас возникнет та же проблема с хранением состояний в новом коде Terraform.
Если вы хотите автоматизировать весь этот процесс в своих действиях на GitHub, вы можете использовать Инструмент AWS CLI для создания корзины S3 перед запуском кода Terraform. Вам придется добавить какую-то логику в свои действия GitHub, чтобы проверить, существует ли корзина, и запускать команды CLI для создания корзины только один раз, так как это не удастся, если корзина уже существует.
О боже, я забыл, что смысл ведра состоит в том, чтобы ведро сохраняло состояние. Вот почему это называется проблемой курицы и яйца. Благодаря тонну.