AWS Budgetsで予算組んでみたり、CLIやSDKで参照してみたりする
AWSで利用しているリソースの予算管理ってやってます? 「AWS Budgets」で簡単にできるっぽいので、やってみました。 前提 あなたが見ている時と画面が違うかもしれません ここで書いている内容は2017年4月18日 […]
目次
AWSで利用しているリソースの予算管理ってやってます?
「AWS Budgets」で簡単にできるっぽいので、やってみました。
前提
あなたが見ている時と画面が違うかもしれません
ここで書いている内容は2017年4月18日時点のものです。
AWS側のアップデートで機能や画面が変わっているかもしれないのでご了承ください。
root権限がある
請求ダッシュボードhttps://console.aws.amazon.com/billing/homeからアクセスするので、root権限持ってるアカウントでログインしてください。
予算を組む

とりあえずメニューの[予算]をクリックしてAWS Budgetsを開きます。
[予算を作成]ボタンを押すとウィザードが立ち上がります。
1:予算の詳細を決める
期間については最短1ヶ月から1年6ヶ月まで、もしくは[-]を選択して無制限とすることができます。
2: 予算対象を指定する
AWSのサービス・関連AWSアカウント・コスト配分タグ・購入オプション(リザーブドとかっぽい)・AZ・APIオペレーションと結構いろいろ選択できます。
3:通知先を指定する

アラートを出したい場合はSNSを使って通知が出せます。
これは省略可能っぽいです。
作った予算を見る
予測がついてるのとか頼もしいですね。
コードで見る
AWSといえばAPIでいろいろできるのが魅力の1つですが、やっぱり予算に関してもAPIがありました。
AWS-CLI
aws budgets describe-budgetsで作成した予算を一覧でみることができます。
$ aws budgets describe-budgets --account-id YOUR_AWS_ACCOUNT_ID
{
    "Budgets": [
        {
            "CalculatedSpend": {
                "ForecastedSpend": {
                    "Amount": "6.31599999999999983657517077517695724964141845703125", 
                    "Unit": "USD"
                }, 
                "ActualSpend": {
                    "Amount": "-0.313000000000000000444089209850062616169452667236328125", 
                    "Unit": "USD"
                }
            }, 
            "BudgetType": "COST", 
            "BudgetLimit": {
                "Amount": "10", 
                "Unit": "USD"
            }, 
            "BudgetName": "api.wp-kyoto.net", 
            "CostTypes": {
                "IncludeTax": true, 
                "UseBlended": false, 
                "IncludeSubscription": true
            }, 
            "TimeUnit": "MONTHLY", 
            "TimePeriod": {
                "Start": 1491004800.0, 
                "End": 3706473600.0
            }, 
            "CostFilters": {
                "Service": [
                    "Amazon CloudFront", 
                    "Amazon Elastic Block Store", 
                    "Amazon Elastic Compute Cloud - Compute", 
                    "Amazon Route 53", 
                    "Amazon Simple Storage Service"
                ]
            }
        }
    ]
}
aws budgets helpの実行結果を見た限りでは、予算の作成や更新・通知先していとかもできる様子です。
NAME
       budgets -
DESCRIPTION
       All public APIs for AWS Budgets
AVAILABLE COMMANDS
       o create-budget
       o create-notification
       o create-subscriber
       o delete-budget
       o delete-notification
       o delete-subscriber
       o describe-budget
       o describe-budgets
       o describe-notifications-for-budget
       o describe-subscribers-for-notification
       o help
       o update-budget
       o update-notification
       o update-subscriber
AWS SDKでみる
もちろんSDKもあります。
Node.jsだと以下のようになります。
const aws = require('aws-sdk')
var budgets = new aws.Budgets({apiVersion: '2016-10-20'})
var params = {
  AccountId: 'YOUR_AWS_ACCOUNT_ID', /* required */
  MaxResults: 1
}
budgets.describeBudgets(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
})
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Budgets.html#describeBudgets-property
使い所
- kintoneあたりの業務管理ツールと連携させる
 - CloudFormationスタックを立ち上げる際に自動で予算を設定するようにする
 - 複数クライアントをまとめているAWSアカウントで、クライアント別に予算状況を見れるようにする
 - シェル芸のネタにする
 
CLI / SDK使って頑張るところと言われるとこんなところかなぁと思います。
今回は「触ってみた」なので、このへんで。



