Действия Github и создание корзины S3 для использования при создании RDS

Я использую 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 для его создания, но я не уверен в том, что это лучший метод.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш комментарий звучит так, будто вы думаете, что объявление бэкэнда S3 на самом деле приведет к тому, что Terraform создаст корзину S3:

Я использую корзину для хранения информации о состоянии и создаю ее с помощью внутренних клавиш Terraform.

Это не относится к делу. Terraform не создаст корзину S3, которую вы используете в качестве серверной части. Прежде чем использовать этот код Terraform, вам необходимо создать корзину S3 самостоятельно. Обойти это невозможно. Если вы хотите, чтобы этот бакет S3 управлялся Terraform, вам пришлось бы выделить его в отдельный шаблон Terraform, который вы запускаете перед этим кодом Terraform, но тогда у вас возникнет та же проблема с хранением состояний в новом коде Terraform.

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

О боже, я забыл, что смысл ведра состоит в том, чтобы ведро сохраняло состояние. Вот почему это называется проблемой курицы и яйца. Благодаря тонну.

ccohen 09.03.2024 14:12

Другие вопросы по теме