LoginSignup
2
3

More than 5 years have passed since last update.

【AWS】Billingファイルから、料金データを取り出してみた

Last updated at Posted at 2015-11-03

1アカウントに紐付くアカウントの金額を、見やすい形で出力する必要があったので、Rubyスクリプト作ってみました。

まずは、アカウント毎の料金と、それの合計金額のみ出力プログラムです。

各アカウント毎の詳細も出せるように、機能増強していこうと思います。

billing_data_calc.rb
# coding: utf-8
require "csv"
require 'bigdecimal'

# hashの初期化
hash = Hash.new
acounts_list = []

# billing.csvをtableデータとして格納
data = CSV.table('../XXXXXXXXXXXX-aws-cost-allocation-2015-10.csv')

# Totalコストで、各社毎のデータを整理
hash["cost"] = {}
data.each do |list|
  if list[:recordtype] == "AccountTotal"
    linkedAccountName = list[9]
    currencyCode = list[24]
    costBeforeTax = list[25]
    taxAmount = list[27]
    totalCost = list[29]

    # アカウント毎のhashデータを作成する
    hash["cost"]["#{linkedAccountName}"] = {}
    hash["cost"]["#{linkedAccountName}"]["currencyCode"] = "#{currencyCode}"
    hash["cost"]["#{linkedAccountName}"]["costBeforeTax"] = "#{costBeforeTax}"
    hash["cost"]["#{linkedAccountName}"]["taxAmount"] = "#{taxAmount}"
    hash["cost"]["#{linkedAccountName}"]["totalCost"] = "#{totalCost}"

    acounts_list.push("#{linkedAccountName}")
  end
end

cost_data = []
# 一括請求金額のTotalコスト算出
sum = 0
acounts_list.each do |aclist|
  account_cost = "#{hash["cost"]["#{aclist}"]["totalCost"]}"
  account_cost = account_cost.to_f
  sum = sum + account_cost
  cost_data.push(account_cost)
end

puts cost_data
puts BigDecimal("#{sum}").round(2,BigDecimal::ROUND_UP).to_f
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3