💴

AWS 請求アラートを CloudFormation で試してみた!

に公開

はじめに

AWS 検証環境で EC2 が起動しっぱなしとなっていて、請求料金が規定値(例えば予算1万円以内とか)を超えることが度々・・・
規定値になったらメールでお知らせしてくれるとウレシイなと思い、調べてみました。

仕様

規定値(予算)を指定し、規定値の○%(3段階)に達したらアラートメールを送付する仕様です。

YAMLテンプレート

下記参考サイトのパラメータ入力順番だけ変更しました。

billing-alarm.yaml(折り畳んでます)
AWSTemplateFormatVersion: '2010-09-09'
Description: "Set & Update Budget Alarts"

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: Resource Configuration
        Parameters:
          - Amount
          - NotificationEmail
          - ThresholdLow
          - ThresholdMid
          - ThresholdHigh

Parameters:
  Amount:
    Type: Number
    Default: 1
    Description: Budget Limit Amount

  NotificationEmail:
    Type: String
    Description: Notification Email Address

  ThresholdHigh:
    Type: Number
    Default: 150
    MinValue: 50
    MaxValue: 200
    Description: 50-200 % of budgeted amount(High)

  ThresholdMid:
    Type: Number
    Default: 100
    MinValue: 50
    MaxValue: 200
    Description: 50-200 % of budgeted amount(Middle)

  ThresholdLow:
    Type: Number
    Default: 80
    MinValue: 5
    MaxValue: 200
    Description: 50-200 % of budgeted amount(Low)

Resources:
  BudgetAlerts:
    Type: AWS::Budgets::Budget
    Properties:
      Budget:
        BudgetLimit:
          Amount: !Ref Amount
          Unit: USD
        TimeUnit: MONTHLY
        BudgetType: COST
        BudgetName: !Sub ${AWS::StackName}-billing-alarm
      NotificationsWithSubscribers:
        - Notification:
            NotificationType: ACTUAL
            ComparisonOperator: GREATER_THAN
            Threshold: !Ref ThresholdHigh
          Subscribers:
            - SubscriptionType: EMAIL
              Address: !Ref NotificationEmail
        - Notification:
            NotificationType: ACTUAL
            ComparisonOperator: GREATER_THAN
            Threshold: !Ref ThresholdMid
          Subscribers:
            - SubscriptionType: EMAIL
              Address: !Ref NotificationEmail
        - Notification:
            NotificationType: ACTUAL
            ComparisonOperator: GREATER_THAN
            Threshold: !Ref ThresholdLow
            ThresholdType: PERCENTAGE
          Subscribers:
            - SubscriptionType: EMAIL
              Address: !Ref NotificationEmail
      ResourceTags:
        - Key: "CloudFormation"
          Value: !Ref AWS::StackName

YAMLパラメーターの解説

パラメーター名 解説 備考
Amount 予算を設定(USD) 1 万円の場合、執筆時点では約 65 USD
NotificationEmail 通知先メールアドレス
ThresholdLow 予算の○%になったらアラート 初期値:80%
ThresholdMid 予算の○%になったらアラート 初期値:100%
ThresholdHigh 予算の○%になったらアラート 初期値:150%

動作確認

予算の各基準値に達した際、YAML テンプレート内の BudgetName で指定したタイトルのメールが指定メールアドレスに届きます。
※初回は基準値を低めにして試すのがおすすめです。

注意

  • どのサービスが課金されてるかは別途管理コンソールで確認してください。
  • 基準値に達する毎にアラートメールが送付されます。
    短時間に請求金額が上昇した場合は立て続けにアラートメールが送付されます。
  • 基準値は月ごとに有効です。
    同月で1度 ThresholdHigh (MAX基準値)を超過した場合は以降アラートメールは送付されません。
    翌月になれば、クリアされます。

まとめ

検証などで AWS を利用する場合、予算内で・・・とかあると思います。
そういった場合に活用できるかなと思いますので、参考にしてみてください!
この記事が、誰かの役に立てば幸いです。

参考サイト

株式会社グローバルネットコア 有志コミュニティ(β)

Discussion