Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS Budgets Slack通知システム

AWS BudgetsのコストアラートをSlackに自動通知するTerraform設定です。

概要

このシステムは以下の流れでAWSのコスト監視を行います:

AWS Budgets → SNS Topic → AWS Chatbot → Slack Channel
  • AWS Budgets: 月次予算を設定し、閾値を超えた際にアラートを発行
  • SNS Topic: アラートメッセージを配信
  • AWS Chatbot: SNSメッセージをSlackに転送
  • Slack: チームにコストアラートを通知

アーキテクチャ

graph LR
    A[AWS Budgets<br/>予算監視・アラート発行] --> B[SNS Topic<br/>メッセージ配信]
    B --> C[AWS Chatbot<br/>メッセージ転送]
    C --> D[Slack Channel<br/>通知表示]
    
    style A fill:#ff9999
    style B fill:#99ccff
    style C fill:#99ff99
    style D fill:#ffcc99
Loading

詳細フロー

sequenceDiagram
    participant User as ユーザー
    participant Budget as AWS Budgets
    participant SNS as SNS Topic
    participant Chatbot as AWS Chatbot
    participant Slack as Slack Channel
    participant Email as メール通知

    User->>Budget: 予算設定($100, 80%閾値)
    Budget->>Budget: コスト監視
    
    alt 予算の80%を超過
        Budget->>SNS: アラートメッセージ送信
        SNS->>Chatbot: メッセージ配信
        SNS->>Email: メール通知
        Chatbot->>Slack: Slack通知
        Slack->>User: アラート表示
        Email->>User: メール受信
    end
Loading

必要なリソース

AWS リソース

  • AWS Budgets: 月次予算の設定
  • SNS Topic: アラートメッセージの配信
  • SNS Topic Policy: BudgetsからのPublish権限
  • SNS Subscription: メール通知(オプション)
  • IAM Role: Chatbot用の権限
  • IAM Policy: SNSアクセス権限
  • AWS Chatbot: Slack連携設定

外部サービス

  • Slack Workspace: 通知先のワークスペース
  • Slack Channel: 通知先のチャンネル

セットアップ手順

1. 前提条件

  • AWS CLI が設定済み
  • Terraform がインストール済み
  • Slack ワークスペースへの管理者権限

2. 設定ファイルの準備

terraform.tfvars ファイルを作成し、以下の値を設定:

# メール通知先(オプション)
email_address = "your-email@example.com"

# Slack設定
slack_channel_id   = "CXXXXXXXXXX"  # SlackチャンネルID
slack_workspace_id = "TXXXXXXXXXX"  # SlackワークスペースID

# AWS設定
aws_account_id = "123456789012"     # AWSアカウントID

# 予算設定
threshold    = "80"                 # 予算の80%で通知
limit_amount = "10"                # 月次予算上限 $100

3. Terraform実行

# 初期化
terraform init

# 計画確認
terraform plan

# 適用
terraform apply

4. Slack連携の確認

  1. AWS ChatbotコンソールでSlack連携を確認
  2. テストメッセージを送信して動作確認

コスト

このシステムは完全無料です:

サービス 料金
AWS Budgets 無料
SNS 最初の100万リクエスト無料
AWS Chatbot 無料
Slack 既存ワークスペース使用

ファイル構成

├── budgets.tf          # AWS Budgets、SNS、Chatbot設定
├── data.tf             # IAMポリシードキュメント
├── provider.tf         # AWS プロバイダー設定
├── variables.tf        # 変数定義
├── terraform.tfvars    # 変数値(機密情報 - Git除外)
├── .gitignore          # Git除外設定
└── README.md           # このファイル

カスタマイズ

予算設定の変更

terraform.tfvarslimit_amountthreshold を変更:

# より厳しい監視
threshold    = "50"     # 50%で通知
limit_amount = "50"     # $50の予算

# より緩い監視
threshold    = "90"     # 90%で通知
limit_amount = "500"    # $500の予算

通知先の追加

budgets.tf にSNSサブスクリプションを追加:

resource "aws_sns_topic_subscription" "additional_email" {
  topic_arn = aws_sns_topic.aws_budget_alerts.arn
  protocol  = "email"
  endpoint  = "additional@example.com"
}

セキュリティ

  • terraform.tfvars は機密情報を含むため、Gitにコミットされません
  • IAMロールは最小権限の原則に従って設定
  • SNSトピックポリシーでBudgetsからのアクセスのみを許可

トラブルシューティング

よくある問題

  1. Slackに通知が届かない

    • AWS Chatbotの設定を確認
    • SlackチャンネルIDが正しいか確認
  2. メール通知が届かない

    • SNSサブスクリプションの確認メールをチェック
    • スパムフォルダを確認
  3. Terraform認証エラー

    • AWS CLIの認証設定を確認
    • aws sts get-caller-identity でテスト

参考資料

ライセンス

MIT License

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages