Трехуровневое отображение в шаблоне AWS CloudFormation

#amazon-web-services #amazon-cloudformation

Вопрос:

Как я могу создать и использовать трехуровневую карту в разделе сопоставления в шаблоне CloudFormation?

Fn::FindInMap может использоваться только для двухуровневой карты. Ссылка: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html

Хотите определить тип ресурса на основе имени ячейки, домена и области. Что-то вроде:

 Mappings:
  ElastiCacheNodeTypeMapping:
    cell1:
      beta:
        us-east-1: cache.m6g.large
        us-west-2: cache.m6g.large
        eu-west-1: cache.m6g.2xlarge
      prod:
        us-east-1: cache.r6g.24xlarge
    cell2:
      beta:
        us-east-1: cache.m6g.large
        us-west-2: cache.m6g.large
        eu-west-1: cache.m6g.large
      prod:
        us-east-1: cache.r6g.24xlarge
 

Ответ №1:

Как я могу создать и использовать трехуровневую карту

К сожалению, вы не можете. Это не поддерживается, как вы уже заметили. Единственный способ обойти это может быть, возможно, с помощью макроса CloudFormation. Вам нужно будет создать такой макрос, который возьмет вашу трехуровневую карту и реорганизует ее в допустимую двухуровневую карту для развертывания стека.

Комментарии:

1. В моем случае атрибуты Имя ячейки, домен и область будут переданы в качестве параметров. Даже если я смогу создать двухуровневую карту, создание составного ключа будет непростым делом. Это потому, что я не могу использовать Fn::Join или Fn::Sub Fn::FindInMap использовать . 🙁 Ссылка: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…

2. @RohitLakhotia Это не имеет значения. у вас не может быть карт 3-го уровня.

3. @RohitLakhotia CFN-не самый удобный инструмент. Ему не хватает многих вещей, которые есть у других инструментов IaC (например, Terraform). Как я уже писал, вы могли бы создать для этого макрос или перепроектировать свою архитектуру так, чтобы эти 3-уровневые карты не требовались. Также можно использовать пользовательский ресурс CFN.

4. @RohitLakhotia Вы также можете ознакомиться с инструментами CDK для создания или развертывания стеков CFN. CDK обладает гораздо большей гибкостью.