📚

コスト超過をLINEで通知する with Terraform

2024/03/13に公開

初めに

本ページでは、コスト超過の通知をLINEに送る方法について記述する。本ページを読むことで以下の学びを得られる。

  • LINEとAWSリソースを連携させる方法
  • 通知に必要なリソースをTerraformで記述する方法

やりたいこと

AWS Budgetsのコスト超過をLINEで通知したい。また、AWSリソースはTerraformで管理したい。

概要

構成図は以下。AWS Budgetsのサブスクリプション先としてSNSを設定する。SNSからLINEに直接通知できないため、Lambdaを経由してLINEにメッセージを送信する。

作成手順概要

手順1. LINE Developersの設定とLINEのアクセストークンの取得
手順2. Terraformで用いる環境変数を設定
手順3. GitHubからTerraformのコードを取得し、リソースを作成

作成手順

手順1. LINE Developersの設定とLINEのアクセストークンの取得

  1. Line Developersへの登録。(こちらから)
  2. Line Developersにログインし、プロバイダーを作成する。
  3. プロバイダー内で「チャンネル基本設定」のユーザIDを確認し、コピーしておく。
  4. プロバイダー内で「Messaging API設定」のチャネルアクセストークンを確認し、コピーしておく。

手順2. Terraformで用いる環境変数を設定

  1. ローカル環境のCLIを開く
  2. 手順1で取得したユーザID、チャネルアクセストークンの設定

■ Windowsの場合

export TF_VAR_LINE_USER_ID=<ユーザID>
export TF_VAR_LINE_ACCESS_TOKEN=<チャネルアクセストークン>

■ Mac/Linuxの場合

TF_VAR_LINE_USER_ID=<ユーザID>
TF_VAR_LINE_ACCESS_TOKEN=<チャネルアクセストークン>

手順3. GitHubからTerraformのコードを取得し、リソースを作成

  1. aws-terraform-LINEを自分のローカル環境にgit cloneする。
git clone https://github.com/proyogram/aws-terraform-LINE
  1. 以下のコマンドでリポジトリ配下に移動する。
cd aws-terraform-LINE

3.provider.tf 内の<BUCKET_NAME>にバケット名を設定。無ければ新規で作成する。
4. 以下のコマンドを実行する。

terraform init
  1. ルート直下の main.tf の budgets_alert モジュールに以下のパラメータを入力。
main.tf
module "budgets_alert" {
  source            = "./modules/budgets_alert"
  prefix            = "tf-budgets-alert"
  limit_cost_usd    = "5"
  line_user_id      = var.LINE_USER_ID
  line_access_token = var.LINE_ACCESS_TOKEN
}
  • source: 呼び出すmoduleのPath。
  • prefix: 作成するリソースに付与されるprefix。
  • limit_cost_usd: 最大コストを設定。この値の50%,55%,80%,100%を超えた時にアラートが上がる設定となっている。このPercentageを変更したい場合、ローカル環境で「main_budgets.tf」のthresholdを修正。
  • line_user_id: 環境変数のユーザIDをvariablesから取得。そのままでよい。
  • line_access_token: 環境変数のチャネルアクセストークンをvariablesから取得。そのままでよい。
  1. terraform planで作成されるリソースを確認する。
  2. terraform applyでリソースを作成する。

Discussion