エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

AWS SNS で SMS 送信したときの料金を調べる覚書

AWS を使って SMS を送信する機会があったので、送信にかかった利用金を CloudWatch Metrics で取得するコードを Ruby で書きました。その覚書。

require 'aws-sdk-cloudwatch'

params = {
  metric_data_queries: [
    {
      id: 'spentUSD',
      metric_stat: {
        metric: {
          namespace: 'AWS/SNS',
          metric_name: 'SMSMonthToDateSpentUSD'
        },
        period: 24 * 60 * 60, # seconds per day
        stat: 'Maximum'
      },
    }
  ],
  start_time: Time.new(2020, 1, 1),
  end_time: Time.new(2020, 4, 1)
}

client = Aws::CloudWatch::Client.new(region: 'ap-northeast-1')

metric_data_results = []

loop do
  response = client.get_metric_data(params)
  metric_data_results.concat(response.metric_data_results)

  break unless response.next_token

  params.next_token = response.next_token
end

pp metric_data_results.flatten