CloudFrontの月間転送量をAWS CLIで取得するコマンドです。
そんなに難しくないだろうと思っていましたが、恥ずかしながらハマってしまったので、メモとして残しておきます。
AWSコンソールのCloudWatchでは期間を30日にしても、開始日と終了日がずれてしまい、正確な数値が取得できません。AWS CLIで開始日と終了日を指定することで、1ヶ月分の転送量やリクエスト数を取得することができます。
CloudFrontのメトリクスは、リージョンをus-east-1と指定する。ここまではよかったが....、下記のコマンドではデータが取得できない。
$ aws cloudwatch get-metric-statistics \
--namespace "AWS/CloudFront" \
--dimensions Name=DistributionId,Value=XXXXXXXXXXX \
--metric-name "BytesDownloaded" \
--statistics Sum \
--start-time "2017-10-01T00:00:00+09:00" \
--end-time "2017-11-01T00:00:00+09:00" \
--period 2678400 \
--region us-east-1
{
"Datapoints": [],
"Label": "BytesDownloaded"
}
AWSのドキュメントによると、CloudFrontのメトリクスは、下記のディメンションを2つ指定する必要ありました。
ディメンション | 説明 |
---|---|
DistributionID | メトリクスを表示するディストリビューションの CloudFront ID。 |
Region | メトリクスを表示するリージョン。この値は、Global である必要があります。Region ディメンションは、CloudFront のメトリクスが保存されているリージョン (米国東部(バージニア北部)) とは異なります。 |
$ aws cloudwatch get-metric-statistics \
--namespace "AWS/CloudFront" \
--dimensions Name=DistributionId,Value=XXXXXXXXXXX Name=Region,Value=Global \
--metric-name "BytesDownloaded" \
--statistics Sum \
--start-time "2017-10-01T00:00:00+09:00" \
--end-time "2017-11-01T00:00:00+09:00" \
--period 2678400 \
--region us-east-1 \
{
"Datapoints": [
{
"Timestamp": "2017-09-30T15:00:00Z",
"Sum": XXXX.0,
"Unit": "None"
}
],
"Label": "BytesDownloaded"
}
参考サイト
AWS の名前空間
http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/aws-namespaces.html
Amazon CloudFront のメトリクスおよびディメンション
http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/cf-metricscollected.html