Как я могу применить или уничтожить после удаления ресурсов через консоль AWS? - PullRequest
0 голосов
/ 30 апреля 2020

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

Сегодня я не смог выполнить terraform apply из-за ошибки при обновлении одного из этих связанных с пакетами ресурсы (к сожалению, я потерял эти начальные сообщения об ошибках).

Я сталкивался с чем-то подобным и устранял препятствие, вручную отключая / удаляя очередь заданий. Так что я сделал это снова через консоль AWS и запустил terraform apply, однако на этот раз план / применение все еще не работали, возможно, потому что в очереди было единственное невыполненное задание в работоспособном, но незапущенном состоянии (предыдущий раз я ' мы сделали это успешно, очередь работ была пуста). Так что я сделал то же самое с вычислительной средой (отключен / удален через AWS Консоль), и теперь я получаю такие сообщения с помощью terraform plan:

2020/04/30 15:15:43 [ERROR] module.batch_data_load: eval: *terraform.EvalRefresh, err: One compute environment is expected, but AWS return no compute environment
2020/04/30 15:15:43 [ERROR] module.batch_data_load: eval: *terraform.EvalSequence, err: One compute environment is expected, but AWS return no compute environment

Так что, похоже, я запутался мой файл состояния с помощью управляемых ресурсов Terraform через AWS Console.

Как применить или уничтожить после удаления ресурсов через AWS Console?

1 Ответ

1 голос
/ 01 мая 2020

Terraform пытается повторно синхронизировать свое собственное представление о состоянии с удаленными объектами как часть создания плана, но это не всегда работает, потому что иногда удаленные объекты взаимодействуют так, как Terraform не может объяснить, или по другим причинам, когда У Terraform недостаточно информации для полной повторной синхронизации.

Если вы знаете, что удаленный объект, связанный с конкретным экземпляром ресурса в вашей конфигурации, удален, вы можете указать Terraform «забыть» этот объект и удалить его из общее состояние, используя команду terraform state rm:

terraform state rm aws_batch_job_queue.example

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

...