К слову о интересных темах - смахнем пыль со старого срача о системах управления облаками, т.е. Infrastructure-as-Code. Так получилось, что я снова изучаю возможности CloudFormation и нарвался на нововведение под названием Language Extensions.
Language Extensions это Template Macros, разработанные AWS. Сами макросы представляют собой блоки шаблона, которые “трансформируются” на лету, делая шаблон динамическим и позволяя с ним химичить, как душе угодно.
Например, AWS SAM это самый, что ни на есть, макрос-сахарок, который абстрагирует под собой неудобства описания serverless ресурсов.
На момент этой записи Language Extensions умеет конвертировать YAML ключи-значения в JSON-строки, включает поддержку Intrinsic Functions в - наконец-то - Update/DeletionPolicy, и с какой-то целью добавляет новую функцию Fn::Length.
Что привлекло мое внимание, так это обсуждение новых фишек этой разработки, а именно вот эта ветка. Да, вам не показалось, мои дорогие ненавистники многострочных шаблонов. В CFN собираются внедрить циклы. Возможно, затем и придумали
Fn::Length.При чем здесь срач, скажете вы? При том, что львиная доля холиваров CloudFormation vs Terraform vs CDK vs Pulumi нередко сводились к тому, что последние 3 инструмента могут использовать цикличность для описания ресурса один раз, а создания многажды, а мой любимый целофан - нет. Поэтому, создавая VPC с 6 подсетями, 3 публичными и 3 приватными, вы 6 раз описывали подсеть, 6 раз описывали ассоциацию таблицу маршрузитации с подсетью, и неизвестно сколько еще дубликаций вам пришлось бы сделать позднее. Шаблон становился огромным набором копированного дублированного кода, который не хочется ни читать, ни тем более обслуживать.
Наконец-то за эту проблему взялись сами владельцы сервиса. Это создает надежду, что сервис живет и не станет полумертвым backend’ом для CDK. А может и станет, кто ж его знает.