AWSでテスト環境をいろいろ構築していると、削除したと思っていたサービスが残っていたりして、思わぬ出費がかさむ事があります。
請求書を確認すればある程度は把握できますが、月の途中で構築して削除したサービスは、請求金額だけではわかりずらい為、紹介するコマンドで細かくコストを算出する事で、無駄なサービスがないか確認できます。
まずは算出する期間を設定します。
昨日のコストの集計時は昨日~今日までの期間で集計します。
START=$(date +"%Y-%m-%d" -d"1 day ago");\
END=$(date +"%Y-%m-%d")
先月のコストの集計時は先月01日~今月01日の期間で集計します。
START=$(date +"%Y-%m-01" -d"1 month ago");\
END=$(date +"%Y-%m-01")
今月のコストの集計時は今月01日~来月01日の期間で集計します。
START=$(date +"%Y-%m-01");\
END=$(date +"%Y-%m-01" -d"1 month")
期間を設定したら aws ce get-cost-and-usage コマンドで集計します。
echo "##########################################";\
echo "## Start : ${START} End : ${END}" ##;\
echo "##########################################";\
echo "USAGE_TYPE,BlendedCost,Amount,UnblendedCost,Amount" > /tmp/awscli.tmp;aws ce get-cost-and-usage --time-period Start=${START},End=${END} --granularity MONTHLY --metrics "BlendedCost" "UnblendedCost" --group-by Type=DIMENSION,Key=USAGE_TYPE --query "ResultsByTime[].Groups[].[Keys[0],Metrics.BlendedCost.Amount,Metrics.BlendedCost.Unit,Metrics.UnblendedCost.Amount,Metrics.UnblendedCost.Unit]" --output text | tr "\t" "," | sort -Vrk 2 -t, >> /tmp/awscli.tmp;column -s, -t /tmp/awscli.tmp;rm /tmp/awscli.tmp
実行結果 (例:先月の請求一覧
##########################################
## Start : 2021-01-01 End : 2021-02-01 ##
##########################################
USAGE_TYPE BlendedCost Currency UnblendedCost Currency
APN1-BoxUsage:t3a.micro 10.0706438916 USD 10.0706438916 USD
APN1-EBS:VolumeUsage.gp2 1.7145817437 USD 1.7145817437 USD
APN1-DataTransfer-Out-Bytes 0.8388800874 USD 0.8388800874 USD
APN1-EBS:SnapshotUsage 0.7398544417 USD 0.7398544417 USD
APN1-ElasticIP:IdleAddress 0.211 USD 0.211 USD
APN1-EBS:VolumeUsage.gp3 0.0574838726 USD 0.0574838726 USD
USE1-CostDataStorage 0.0551772579 USD 0.0551772579 USD
APN1-DataTransfer-Regional-Bytes 0.005259099 USD 0.005259099 USD
APN1-USE1-AWS-Out-Bytes 0.0030090927 USD 0.0030090927 USD
APN1-USE2-AWS-Out-Bytes 0.0002776897 USD 0.0002776897 USD
APN1-USW2-AWS-Out-Bytes 0.0002852387 USD 0.0002852387 USD
APN1-EU-AWS-Out-Bytes 0.0000480567 USD 0.0000480567 USD
APN1-USW1-AWS-Out-Bytes 0.0000329715 USD 0.0000329715 USD
APN1-APS1-AWS-Out-Bytes 0.0000242494 USD 0.0000242494 USD
APN1-APN3-AWS-Out-Bytes 0.0000089507 USD 0.0000089507 USD
APN1-APS3-AWS-Out-Bytes 0.0000057433 USD 0.0000057433 USD
APN1-EUN1-AWS-Out-Bytes 0.0000010569 USD 0.0000010569 USD
APN1-EUW2-AWS-Out-Bytes 0.0000005492 USD 0.0000005492 USD
APN1-EUC1-AWS-Out-Bytes 0.000002316 USD 0.000002316 USD
APN1-EUW3-AWS-Out-Bytes 0.0000001873 USD 0.0000001873 USD
APN1-MES1-AWS-Out-Bytes 0.0000000564 USD 0.0000000564 USD
APN1-APS2-AWS-Out-Bytes 0.0000000564 USD 0.0000000564 USD
APN1-APE1-AWS-Out-Bytes 0.0000000564 USD 0.0000000564 USD
APN1-SAE1-AWS-Out-Bytes 0.0000000302 USD 0.0000000302 USD
Requests-Tier1 0.000005 USD 0.000005 USD
実行結果 (例:昨日の請求一覧
##########################################
## Start : 2021-01-31 End : 2021-02-01 ##
##########################################
USAGE_TYPE BlendedCost Currency UnblendedCost Currency
APN1-CW:MetricMonitorUsage 0.1262500007 USD 0.1262500007 USD
APN1-DataTransfer-Out-Bytes 0.0513195061 USD 0.0513195061 USD
USE1-CostDataStorage 0.0016843333 USD 0.0016843333 USD
APN1-USE1-AWS-Out-Bytes 0.0014943681 USD 0.0014943681 USD
APN1-DataTransfer-Regional-Bytes 0.0001761163 USD 0.0001761163 USD
APN1-USW2-AWS-Out-Bytes 0.0000500592 USD 0.0000500592 USD
APN1-EU-AWS-Out-Bytes 0.0000094074 USD 0.0000094074 USD
APN1-EUW2-AWS-Out-Bytes 0.0000075369 USD 0.0000075369 USD
APN1-USE2-AWS-Out-Bytes 0.0000066315 USD 0.0000066315 USD
APN1-BoxUsage:t3a.small 0.5635 USD 0.5635 USD
APN1-EUC1-AWS-Out-Bytes 0.0000002066 USD 0.0000002066 USD
APN1-APS1-AWS-Out-Bytes 0.0000001979 USD 0.0000001979 USD
APN1-USW1-AWS-Out-Bytes 0.0000000934 USD 0.0000000934 USD
APN1-EBS:VolumeUsage.gp3 0.06 USD 0.06 USD
比較すると、先月はgp2を使用していたことが確認できますが、昨日の段階でgp2が集計されないので、先月で利用を終了したことがわかります。
同様に、先月はElasticIPの請求が上がっているので、アタッチしていないElasticIPが存在していたことがわかります。
項目 | 説明 |
BlendedCost | BlendedRate に UsageAmount を乗じた値。 |
UnblendedCost | UnblendedRate に UsageAmount を乗じた値。 |
BlendedRate | 組織全体で各 SKU に発生した平均コスト。 |
SKU | 製品の一意のコード。 |
UnblendedRate | 特定の使用のための結合されていない割合。 |
UsageAmount | 指定した期間に発生した使用量。 |
get-cost-and-usageのオプション説明
aws ce get-cost-and-usage
--time-period Start=2021-01-01,End=2021-02-01
--granularity MONTHLY
--metrics "BlendedCost" "UnblendedCost"
--group-by Type=DIMENSION,Key=USAGE_TYPE
time-period | 期間を指定 ・START ・END |
granularity | コストの粒度を指定 ・DAILY ・MONTHLY ・HOURLY |
metrics | 算出するメトリクスを指定 ・AmortizedCost ・BlendedCost ・NetAmortizedCost ・NetUnblendedCost ・NormalizedUsageAmount ・UnblendedCost ・UsageQuantity |
group-by | グループを指定 ・AZ ・INSTANCE_TYPE ・LEGAL_ENTITY_NAME ・LINKED_ACCOUNT ・OPERATION ・PLATFORM ・PURCHASE_TYPE ・SERVICE ・TENANCY ・RECORD_TYPE ・USAGE_TYPE |