CloudFormationでCloudWatchAlermを作成する


はじめに

ぐぐってもサンプルがでてこなくて、公式ページ見ながら作成したのでメモ。
いくつもLambda関数を作成しており、マネジメントコンソールで手動で作成するのが面倒なため、CloudFormationでコピペでできるように作成。

テンプレート(yaml)

Lambdaで実行時間が3秒を超えたときのアラーム。
1分の間に実行時間の最大値が3秒以上の回数が1回を超えたときにアラームをだす。
SNSにアラーム情報を送っている。

AWSTemplateFormatVersion: 2010-09-09
Resources:
  sample:
    Type: 'AWS::CloudWatch::Alarm'
    Properties:
      Namespace : AWS/Lambda
      AlarmName : lambda-duration-alarm-sample # アラーム名(自由に設定する)
      AlarmActions :
        - arn:aws:sns:ap-northeast-1:123456789012:sns-alerm # アラーム時に実行するSNSのarn(必須ではない)
      MetricName : Duration # 実行時間なのでDurationを指定
      ComparisonOperator : GreaterThanOrEqualToThreshold # 以上を表す
      EvaluationPeriods : 1 # 閾値を何回超えたときにアラーム状態にするか
      Period : 60 # 60秒
      Statistic : Maximum # 最大値
      Threshold : 3000 # 3秒(ミリ秒指定)
      Dimensions :
        - Name : FunctionName
          Value : sample-lambda

指定できる値

MetricName

メトリクス名を指定する。
AWSリソースにより指定する値が異なる。
メトリクスの作成画面のメトリクス名から指定できる値が見れる。

呼び出し回数でアラームを設定したい場合は、「Invocations」を指定する。

ComparisonOperator

指定する値 意味
GreaterThanOrEqualToThreshold 以上
GreaterThanThreshold より大きい
LessThanOrEqualToThreshold 以下
LessThanThreshold より低い

Statistic

指定する値 意味
Average 平均
Maximum 最大値
Minimum 最小値
SampleCount サンプル数
Sum 合計

Dimensions

公式ページ見ても指定の仕方がわかりませんでした。
マネジメントコンソールで作成画面を表示して設定しました。
サンプルの例だと下記の箇所を見ました。

複数設定する必要なときもある。

上記のようなときは、Dimensionsは下記のように複数設定する。

AWSTemplateFormatVersion: 2010-09-09
Resources:

・・・(省略)

      Dimensions :
        - Name : TableName
          Value : sampletable
        - Name : Operation
          Value : Query

最後に

CloudFormationをバリバリコーディングできる人がいるとしたらすごいなぁと思います。
1行定義するにも調べながら書いていて苦労しています。