Я обновился до Terraform v0.12.16 и теперь получаю много сообщений, которые выглядят так:
Warning: Interpolation-only expressions are deprecated
on ../modules/test-notifier/test_notifier.tf line 27, in resource "aws_sns_topic_policy" "default":
27: arn = "${aws_sns_topic.default.arn}"
Terraform 0.11 and earlier required all non-constant expressions to be
provided via interpolation syntax, but this pattern is now deprecated. To
silence this warning, remove the "${ sequence from the start and the }"
sequence from the end of this expression, leaving just the inner expression.
Template interpolation syntax is still used to construct strings from
expressions when the template includes multiple interpolation sequences or a
mixture of literal strings and interpolations. This deprecation applies only
to templates that consist entirely of a single interpolation sequence.
Есть сотни этих сообщений. Есть ли автоматический способ их исправить?
Можно использовать код terraform-clean-syntax Мартина Аткинса (спасибо Кевину Бёрку за подсказку)
Я беззастенчиво использовал его и упаковал в докер-контейнер, чтобы его можно было легко запускать на машинах, отличных от linux_amd64, например MacOS:
https://github.com/NoLedgeTech/terraform-clean-syntax-docker
TL & DR (ВНИМАНИЕ - это обновит ваши tf файлы на месте):
источник
"\$\{([^}"]+)\}"
ее нельзя применять вслепую из-за интерполяции в здесь-документах.Этот инструмент автоматически удаляет начальные и конечные кавычки и скобки для вас, что исправляет предупреждения: https://github.com/apparentlymart/terraform-clean-syntax
источник
panic: didn't find any token of type TokenOBrack
Я использовал notepad ++ для удаления этого синтаксиса интерполяции.
регулярное выражение:
заменить:
источник
Или вы можете использовать простой sed:
источник