Ich habe ein Upgrade auf Terraform v0.12.16 durchgeführt und erhalte jetzt viele Nachrichten, die so aussehen:
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.
Es gibt Hunderte dieser Nachrichten. Gibt es eine automatisierte Möglichkeit, diese zu beheben?
Martin Atkins ' Terraform-Clean-Syntax- Code kann verwendet werden (danke Kevin Burke für den Hinweis)
Ich habe es schamlos verwendet und in einen Docker-Container gepackt, damit es problemlos auf Nicht-Linux_amd64-Computern ausgeführt werden kann, z. B. MacOS:
https://github.com/NoLedgeTech/terraform-clean-syntax-docker
TL & DR (WARNUNG - Dadurch werden Ihre tf-Dateien aktualisiert):
quelle
"\$\{([^}"]+)\}"
Sie kann aufgrund der Interpolation in den vorliegenden Dokumenten nicht blind angewendet werden.Dieses Tool entfernt automatisch die Anfangs- und Endzitate und Klammern für Sie, wodurch die Warnungen behoben werden: https://github.com/apparentlymart/terraform-clean-syntax
quelle
panic: didn't find any token of type TokenOBrack
Ich habe Notepad ++ verwendet, um diese Interpolationssyntax zu entfernen.
Regex:
ersetzen mit:
quelle
Oder Sie können ein einfaches sed verwenden:
quelle