Saya meningkatkan ke Terraform v0.12.16 dan sekarang saya mendapatkan banyak pesan yang terlihat seperti ini:
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.
Ada ratusan pesan ini. Apakah ada cara otomatis untuk memperbaikinya?
Kode sintaks terraform-clean-syntax Martin Atkins dapat digunakan (terima kasih Kevin Burke untuk petunjuk)
Saya tanpa malu-malu menggunakannya dan dikemas dalam wadah buruh pelabuhan sehingga dapat dengan mudah dijalankan pada mesin non linux_amd64, misalnya MacOS:
https://github.com/NoLedgeTech/terraform-clean-syntax-docker
TL&DR (PERINGATAN - ini akan memperbarui file tf Anda di tempat):
sumber
"\$\{([^}"]+)\}"
Tidak dapat diterapkan secara membabi buta karena interpolasi dalam dokumen-dokumen di sini.Alat ini akan secara otomatis menghapus tanda kutip awal dan akhir dan tanda kurung untuk Anda, yang memperbaiki peringatan: https://github.com/apparentlymart/terraform-clean-syntax
sumber
panic: didn't find any token of type TokenOBrack
Saya menggunakan notepad ++ untuk menghapus sintaks interpolasi itu.
regex:
ubah dengan:
sumber
Atau Anda dapat menggunakan sed sederhana:
sumber