Итак, я пытался понять это с прошлой ночи и постоянно видел, что запрос спотового экземпляра выполняется через консоль AWS. Точно так же я мог видеть IP-адрес publi c для спота, и это вводило меня в заблуждение.
Оказывается, мне не хватало 1 строки (аргумента) в моем скрипте:
wait_for_fulfillment = true
По умолчанию установлено значение false, поэтому, когда я пытался установить адрес public_ip, он в то время просто не существовало.
Теперь Terraform будет ждать выполнения запроса на спот. Согласно документации, он выдаст ошибку, если будет достигнут тайм-аут 10 м.