📚
コスト超過をLINEで通知する with Terraform
初めに
本ページでは、コスト超過の通知を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のアクセストークンの取得
- Line Developersへの登録。(こちらから)
- Line Developersにログインし、プロバイダーを作成する。
- プロバイダー内で「チャンネル基本設定」のユーザIDを確認し、コピーしておく。
- プロバイダー内で「Messaging API設定」のチャネルアクセストークンを確認し、コピーしておく。
手順2. Terraformで用いる環境変数を設定
- ローカル環境のCLIを開く
- 手順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のコードを取得し、リソースを作成
- aws-terraform-LINEを自分のローカル環境にgit cloneする。
git clone https://github.com/proyogram/aws-terraform-LINE
- 以下のコマンドでリポジトリ配下に移動する。
cd aws-terraform-LINE
3.provider.tf
内の<BUCKET_NAME>
にバケット名を設定。無ければ新規で作成する。
4. 以下のコマンドを実行する。
terraform init
- ルート直下の 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から取得。そのままでよい。
- terraform planで作成されるリソースを確認する。
- terraform applyでリソースを作成する。
Discussion