CloudFrontの日次のリクエスト数とデータ転送量をAWS CLIで集計する
はじめに
CloudFrontへアクセスしてきた日次のリクエスト数やデータ転送量の合計値を求めることがあったため、備忘録として残します。
必要な設定
- AWS CLIの設定
- CloudFrontがあるAWSアカウントでIAMユーザ + アクセスキーを取得しておく
CloudFrontのUsageで使用量を確認できるが、、
CloudFrontのマネージメントコンソールのUsageで個別のDistribution毎に特定期間の使用量を指定すると確認できます。が、細かく時間を絞っての確認は出来ない仕様になっています。
そういった場合は、CloudWatchのAWS CLIのget-metric-statisticsを使って集計することが可能です。


リクエスト数合計の取得
2020/8/17 15:00〜2020/8/18 15:00までのリクエスト数の合計を取得してみましょう。
dimensionsのvalueへ、CloudFrontのDistribution idを記載してください。
```
[~] aws cloudwatch get-metric-statistics \
--namespace "AWS/CloudFront" \
--dimensions Name=DistributionId,Value=XXXXXXXXX Name=Region,Value=Global \
--metric-name "Requests" \
--statistics Sum \
--start-time 2020-08-17T15:00:00+09:00 \
--end-time 2020-08-18T15:00:00+09:00 \
--period 2678400 \
--region us-east-1
{
"Label": "Requests",
"Datapoints": [
{
"Timestamp": "2020-08-17T06:00:00Z",
"Sum": 632204.0,
"Unit": "None"
}
]
}
```
上記の結果から、632204.0回が導かれました。
ちなみにこちらの数値はHTTPとHTTPSの両方の値を合算したものです。
データ転送量合計の取得
次は、データ転送量の合計を集計してみます。
```
[~] aws cloudwatch get-metric-statistics \
--namespace "AWS/CloudFront" \
--dimensions Name=DistributionId,Value=XXXXXXXXX Name=Region,Value=Global \
--metric-name "BytesDownloaded" \
--statistics Sum \
--start-time 2020-08-17T15:00:00+09:00 \
--end-time 2020-08-18T15:00:00+09:00 \
--period 2678400 \
--region us-east-1
{
"Label": "BytesDownloaded",
"Datapoints": [
{
"Timestamp": "2020-08-17T06:00:00Z",
"Sum": 48389602809.0,
"Unit": "None"
}
]
}
```
上記の結果から、48389602809.0 Byte = 45GBが導かれました。
まとめ
CloudWatchの集計用AWS CLIでいろいろ出来そうですね。例えば、毎日集計結果を自動でSlackへ通知するなど、いろいろと便利そうです。