AWS Budget設定ガイド - 個人AWSアカウントのコスト管理
個人AWSアカウントのコスト管理を効率的に行うためのAWS Budget設定ガイド。月額数ドルの利用でも予期しない請求を防ぐため、ゼロ支出予算、月次全体予算、サービス別予算の3層構造で監視する実践的な設定方法を紹介。CloudFormation、CLI、Terraformを使った具体的な実装例付き。 個人AWSアカウントのコスト管理を効率的に行うためのAWS Budget設定ガイド。月額数ドルの利用でも予期しない請求を防ぐため、ゼロ支出予算、月次全体予算、サービス別予算の3層構造で監視する実践的な設定方法を紹介。CloudFormation、CLI、Terraformを使った具体的な実装例付き。 AWS Budgetsは、AWSの利用料金を監視し、設定した予算を超えそうな場合や超えた場 合にアラートを送信するサービスです。 主な機能は、次のようなものです。 AWS Budgetを使うことで、 コストの異常を早期発見しアラートを上げることで、 予期しない請求を防ぐことが可能となります。 AWS Budgetを利用することで支出を計画的に管理できるようになります。 AWS Budgetでは「予算」という形でアラートのルールを作成しますが、 最大20,000個の予算を無料で作成可能です。 私のAWSの利用状況は以下のようなものです。 複数のブログをAmplifyで運営 Amplifyとは別に複数のブログをS3のホスティング機能で運営 ドローンやアクションカメラの動画バックアップ 他のサービスからAWS主体の運営に変更したのが年初です 過去6ヶ月のコスト実績を分析すると以下のようになります。 サービス別総コストコストに分析すると、次の通りです。 基本設定 CLI設定 zero-spend-budget.json 基本設定 CloudFormationテンプレート 基本設定 CLI設定 基本設定 Terraform設定 金額的にはわずかですが、次のようなこともやってよいかなと思っています。 Cost Anomaly Detectionの設定 タグベースの予算管理 四半期・年間予算の追加 自動アクションの設定 S3ライフサイクルポリシー(既に実施)Table of Contents
1. AWS Budgetとは
2. 私の場合のBudgetルールの考え方
私のAWS利用状況
コスト分析結果
Budget設計方針
3. 実際の設定内容
3.1 ゼロ支出予算(未使用サービス監視)
aws budgets create-budget \
--account-id <ACCOUNT_ID> \
--budget file://zero-spend-budget.json \
--notifications-with-subscribers file://notifications.json{
"BudgetName": "UnusedServices-ZeroSpend",
"BudgetLimit": {
"Amount": "0.01",
"Unit": "USD"
},
"TimeUnit": "MONTHLY",
"BudgetType": "COST",
"CostFilters": {
"Service": [
"AWS Key Management Service",
"AWS Secrets Manager",
"Amazon Simple Notification Service",
"Amazon Simple Queue Service",
"AmazonCloudWatch"
]
}
}3.2 月次全体予算
AWSTemplateFormatVersion: "2010-09-09"
Description: "AWS Budget Configuration"
Resources:
MonthlyTotalBudget:
Type: AWS::Budgets::Budget
Properties:
Budget:
BudgetName: Monthly-Total-Budget
BudgetLimit:
Amount: 7.0
Unit: USD
TimeUnit: MONTHLY
BudgetType: COST
NotificationsWithSubscribers:
- Notification:
NotificationType: ACTUAL
ComparisonOperator: GREATER_THAN
Threshold: 80
ThresholdType: PERCENTAGE
Subscribers:
- SubscriptionType: EMAIL
Address: your-email@example.com
- Notification:
NotificationType: ACTUAL
ComparisonOperator: GREATER_THAN
Threshold: 100
ThresholdType: PERCENTAGE
Subscribers:
- SubscriptionType: EMAIL
Address: your-email@example.com
- Notification:
NotificationType: FORECASTED
ComparisonOperator: GREATER_THAN
Threshold: 100
ThresholdType: PERCENTAGE
Subscribers:
- SubscriptionType: EMAIL
Address: your-email@example.com3.3 Amplify予算
aws budgets create-budget \
--account-id <ACCOUNT_ID> \
--budget '{
"BudgetName": "Amplify-Monthly-Budget",
"BudgetLimit": {
"Amount": "3.50",
"Unit": "USD"
},
"TimeUnit": "MONTHLY",
"BudgetType": "COST",
"CostFilters": {
"Service": ["AWS Amplify"]
}
}' \
--notifications-with-subscribers '[
{
"Notification": {
"NotificationType": "ACTUAL",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 50,
"ThresholdType": "PERCENTAGE"
},
"Subscribers": [{
"SubscriptionType": "EMAIL",
"Address": "your-email@example.com"
}]
}
]'3.4 S3予算
resource "aws_budgets_budget" "s3_budget" {
name = "S3-Storage-Monitor"
budget_type = "COST"
limit_amount = "2.0"
limit_unit = "USD"
time_unit = "MONTHLY"
cost_filter {
name = "Service"
values = ["Amazon Simple Storage Service"]
}
notification {
comparison_operator = "GREATER_THAN"
threshold = 80
threshold_type = "PERCENTAGE"
notification_type = "ACTUAL"
subscriber_email_addresses = ["your-email@example.com"]
}
notification {
comparison_operator = "GREATER_THAN"
threshold = 100
threshold_type = "PERCENTAGE"
notification_type = "FORECASTED"
subscriber_email_addresses = ["your-email@example.com"]
}
}今後の改善ポイント
参考リンク