0

У нас есть группа ElastiCache репликации (AWS::ElastiCache::ReplicationGroup) с NumCacheClusters в настоящее время установлено в 2 в шаблоне CloudFormation и хочу настроить набор CloudWatch сигнализации для каждого CacheClusterId что CloudFormation создает для нас как часть группы репликации.Настройки переменного количества CloudWatch сигнализации в шаблоне CloudFormation

Есть 2 препятствия, которые я облицовочные:

  1. как вы настроили переменное количество ресурсов в шаблоне CloudFormation (хотите N число AWS::CloudWatch::Alarm, где N == NumCacheClusters)
  2. A Сигнал CloudWatch нуждается в CacheClusterId в пределах свойства Dimensions, как мне получить это значение для каждого кластера кэша, создаваемого CloudFormation для нас.

BTW, я очень новичок в CloudFormation, поэтому любые ресурсы по этой теме также будут полезны.

Спасибо.

ответ

1
  1. Вы, к сожалению, не можете установить по-настоящему переменное количество ресурсов в CloudFormation. Лучшее, что вы можете сделать, это поддерживать фиксированное количество условных ресурсов (например, написать шаблон, который может создавать кластеры кэша с 1-3 узлами). Если у вас есть параметр для количества кластеров кэша NumCacheClusters, вы можете написать свои условия, как:

    Conditions: 
    
        TwoCacheClusters: 
        Fn::Or: 
         - Fn::Equals: 
         - Ref: NumCacheClusters 
         - 2 
         - Fn::Equals: 
         - Ref: NumCacheClusters 
         - 3 
    
        ThreeCacheClusters: 
        Fn::Equals: 
         - Ref: NumCacheClusters 
         - 3 
    

    Тогда вы бы условно создать CloudWatch тревоги:

    Resources: 
    
        ... 
    
        SecondCloudWatchAlarm: 
        Type: AWS::CloudWatch::Alarm 
        Condition: TwoCacheClusters 
        Properties: 
         ... 
    
        ThirdCloudWatchAlarm: 
        Type: AWS::CloudWatch::Alarm 
        Condition: ThreeCacheClusters 
        Properties: 
         ... 
    

    Посмотреть документацию CloudFormation Условия: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html

  2. Вы можете обратиться к ресурсам, которые вы создали в другом месте шаблона, используя встроенную функцию Ref. Я считаю, что Ref возвращает Идентификатор кластера по умолчанию для AWS::ElastiCache::ReplicationGroup, так что все, что вам нужно нужно использовать: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html

    Если Ref не возвращает значение ресурса вы хотите по умолчанию, посмотрите на использование Fn::GetAtt вместо того, чтобы вернуть конкретный атрибут. Доступные альтернативные значения зависят от типа ресурса, и все они перечислены в документации: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html