Да, абсолютно. Как правило, вы хотите, чтобы сегмент S3 использовался для каждой из ваших сред, хотя также возможно, чтобы этот сегмент был общим для всех сред, а затем настроить управление доступом с помощью политик сегментов. Не создавайте этот контейнер как часть предоставления других ресурсов, так как его жизненные циклы, вероятно, будут другими (вы хотите сохранить контейнер в течение длительного времени и вряд ли захотите его уничтожить).
Что вы делаете, так это определяете этот сегмент в Terraform, используя сначала локальное состояние. После того, как он создан, вы добавляете удаленный бэкэнд, указывающий на этот сегмент.
terraform {
required_version = ">= 0.11.7"
backend "s3" {
bucket = "my-state-bucket"
key = "s3_state_bucket"
region = "us-west-2"
encrypt = "true"
}
}
После запуска terraform init
Terraform спросит, хотите ли вы перенести файл локального состояния на S3. Ответьте да, и после этого вы можете удалить локальный файл состояния, так как он больше не используется.
Этот подход позволяет вам выйти из сложившейся ситуации и по-прежнему управлять всей своей инфраструктурой как кодом, а не создавать ее вручную с помощью веб-консоли или сценариев bash.