【问题标题】:Setting up variable number of CloudWatch alarms in a CloudFormation template在 CloudFormation 模板中设置可变数量的 CloudWatch 警报
【发布时间】:2017-02-20 12:35:20
【问题描述】:

我们有一个 ElastiCache 复制组 (AWS::ElastiCache::ReplicationGroup),其中 NumCacheClusters 当前在 CloudFormation 模板中设置为 2,并且希望为 CloudFormation 作为复制组的一部分为我们创建的每个 CacheClusterId 设置一组 CloudWatch 警报。

我面临两个障碍:

  1. 如何在 CloudFormation 模板中设置可变数量的资源(想要 N 个 AWS::CloudWatch::Alarm,其中 N == NumCacheClusters
  2. CloudWatch 警报需要 Dimensions 属性中的 CacheClusterId,我如何为 CloudFormation 为我们创建的每个缓存集群获取该值。

顺便说一句,我对 CloudFormation 很陌生,因此任何有关该主题的资源都会有所帮助。

谢谢。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-cloudwatch amazon-elasticache


    【解决方案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 的集群ID,所以这就是你需要使用的全部: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

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 2019-11-09
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2012-10-03
      • 2020-01-09
      相关资源
      最近更新 更多