Настройки Terraform - удаленное состояние s3 - ошибка проверки InvalidParameter

Среда

Terraform v0.12.24 + provider.aws v2.61.0

Бег в альпийском контейнере.

Задний план

У меня есть базовый скрипт terraform, который работает нормально, но теперь я расширяю его и пытаюсь настроить удаленное (S3) состояние.

terraform.tf:

terraform {
  backend "s3" {
    bucket         = "labs"
    key            = "com/company/labs"
    region         = "eu-west-2"
    dynamodb_table = "labs-tf-locks"
    encrypt        = true
  }
}

Ведро существует, и таблица тоже. Я создал их оба с помощью terraform и подтвердил через консоль.

Проблема

Когда я бегу terraform init Я получил:

Error refreshing state: InvalidParameter: 2 validation error(s) found.
- minimum field size of 1, GetObjectInput.Bucket.
- minimum field size of 1, GetObjectInput.Key.

Что я пробовал

terraform fmt не сообщает об ошибках и успешно переформатирует мой terraform.tfфайл. Я попытался переместить строфу в свойmain.tf тоже на всякий случай terraform.tfфайл по какой-то причине игнорировался. Я получил точно такие же результаты.

Я также пробовал запустить это без контейнера alpine, из экземпляра ubuntu ec2 в aws, но получаю те же результаты.

Изначально в ключе было имя файла terraform. Я удалил это (спасибо), но это не помогло решить проблему.

Кроме того, я только что попытался запустить это в более старом образе: hashicorp/terraform:0.12.17 но получаю аналогичную ошибку:

Error: Failed to get existing workspaces: InvalidParameter: 1 validation error(s) found.
- minimum field size of 1, ListObjectsInput.Bucket.

Я предполагаю, что сделал здесь что-то банально глупое, но не могу понять, что это такое.

2 ответа

Решено!!!

Я не понимаю в чем проблема, но теперь у меня есть рабочее решение. Я удалил.terraform каталог и переименовать terraform init. Для меня это нормально, потому что у меня нет существующего состояния. Понимание пришло из чтения ошибки из версии 0.12.17 terraform, которая жаловалась на невозможность чтения рабочей области.

Error: Failed to get existing workspaces: InvalidParameter: 1 validation error(s) found.
- minimum field size of 1, ListObjectsInput.Bucket.

Изначально это привело меня к мысли, что в более ранней версии tf возникла проблема с чтением конфигурации новой версии. Итак, я сдул.terraformи он работал со старым tf, поэтому я сделал это снова, и он работал и с новым tf. Очевидно, что-то случилось в хранилище терраформа. Не знаю как и почему. Но у меня это работает, так что...

В контексте Gitlab Pipelines:

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

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

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