AWS CDK で AWS Budgets を実装してみた

こんにちは!2年目の秋葉です!

手動で予算を設定したり、コストを監視するのは意外と面倒ですよね…。
AWS Budgets を使えば、一定のコストや使用量を超えた際に自動で通知を送ることができますが、
これを手動でコンソールから設定するのはスケールしにくいですよね。
そこで今回は、AWS CDK(Cloud Development Kit) を使って AWS Budgets をコードで管理・デプロイ してみた手順を紹介します。

今回作成するリソース

  • AWS Budgets

アーキテクチャ概要

AWS CDK ソースコード

通知設定

    //===========================================
    // 通知先メーリングリスト
    //==========================================
    const emailAddresses = [                                                                                      
      'xxxxxx@scsk.jp',
      'xxxxxxx@scsk.jp',
    ];

    // subscribers配列への変換
    const subscribers = emailAddresses.map(address => ({
      subscriptionType: 'EMAIL',
      address: address,
    }));

ポイント:

  • 複数の管理者への通知配信
  • 予算を超えた際に、通知するメールアドレスを指定

コスト予算の設定

    // コスト予算の設定
    const monthlyBudget = new budgets.CfnBudget(this, 'MonthlyBudget', {
      budget: {
        budgetType: 'COST',                      // 予算タイプ:コストベース
        timeUnit: 'MONTHLY',                     // 集計単位:月次
        budgetLimit: {
          amount: 1000,                          // 予算上限:1000USD
          unit: 'USD'                            // 通貨単位:米ドル
        }
     },

ポイント:

  • 集計単位: 月次
  • 予算上限: 1,000 USD

予算アラートの設定

    // 予算アラートの設定
    notificationsWithSubscribers: [{
       notification: {
         comparisonOperator: 'GREATER_THAN',    // 比較演算子:超過
         threshold: 80,                         // 通知閾値:予算の80%
         notificationType: 'ACTUAL',            // 通知タイプ:実績値
         thresholdType: 'PERCENTAGE'            // 閾値タイプ:パーセンテージ
       },
       subscribers:subscribers,
    }]

ポイント:

  • 予算上限額の80%を超えたら通知

今回実装したコンストラクトファイルまとめ

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as budgets from 'aws-cdk-lib/aws-budgets';

export interface CostAlarmConstructProps {
// 必要に応じて追加のプロパティを定義
}

export class CostAlarmConstruct extends Construct {
  constructor(scope: Construct, id: string, props?: CostAlarmConstructProps) {
    super(scope, id);

    //===========================================
    // 通知先メーリングリスト
    //===========================================
    const emailAddresses = [                                                                                   
      'xxxxxx@scsk.jp',
      'xxxxxxx@scsk.jp',
    ];

    // subscribers配列への変換
    const subscribers = emailAddresses.map(address => ({
      subscriptionType: 'EMAIL',
      address: address,
    }));

    //===========================================
    // AWS Budgetsの作成
    //===========================================
    // コスト予算の設定
    const monthlyBudget = new budgets.CfnBudget(this, 'MonthlyBudget', {
      budget: {
        budgetType: 'COST',                      // 予算タイプ:コストベース
        timeUnit: 'MONTHLY',                     // 集計単位:月次
        budgetLimit: {
          amount: 1000,                          // 予算上限:1000USD
          unit: 'USD'                            // 通貨単位:米ドル
        }
      },

      // 予算アラートの設定
      notificationsWithSubscribers: [{
        notification: {
          comparisonOperator: 'GREATER_THAN',    // 比較演算子:超過
          threshold: 80,                         // 通知閾値:予算の80%
          notificationType: 'ACTUAL',            // 通知タイプ:実績値
          thresholdType: 'PERCENTAGE'            // 閾値タイプ:パーセンテージ
        },
        subscribers:subscribers,
      }]
    });

  }
}

まとめ

今回は、AWS CDK を使って AWS Budgets をコード化し、自動でデプロイする方法 を紹介しました。
Budgets を CDK に組み込むことで、手動設定の手間を減らしつつ、環境ごとのコスト監視を一貫して管理できるようになります。

どなたかの役に立ててたら幸いです!

 
タイトルとURLをコピーしました