ログってなんぼ

日々のメモです

python boto3でawsのprofileを複数指定してそれぞれの請求額を取得する

たくさんアカウントを抱えていて、一気に確認したいのと、boto3使ってみたかったので。

~/.aws/credentialsのprofileをprofilesに列挙して実行

# coding:utf-8

from boto3.session import Session
import datetime

profiles = ['profile1', 'profile2']

for profile in profiles:
    session = Session(profile_name=profile)

    client = session.client('cloudwatch', region_name = 'us-east-1')

    bill_data = client.get_metric_statistics(
                    Namespace='AWS/Billing',
                    MetricName='EstimatedCharges',
                    Dimensions=[
                        {
                            'Name': 'Currency',
                            'Value': 'USD'
                        }
                    ],
                    StartTime=datetime.datetime.today() - datetime.timedelta(days=1),
                    EndTime=datetime.datetime.today(),
                    Period=86400,
                    Statistics=['Maximum']
                )['Datapoints'][0]

    print "{0:15s}".format(str(profile)) + "{0:8s}".format(str(bill_data['Maximum'])) + ' (USD)'

実行結果

profile1          653.16  (USD)
profile2         55.11    (USD)

うーん(・∀・)イイネ!!

他の機能も使ってみようっと

Boto 3 Documentation — Boto 3 Docs 1.4.8 documentation