CloudFrontの日次のリクエスト数とデータ転送量をAWS CLIで集計する

ヨッシー
2020-08-19
ヨッシー
2020-08-19

はじめに

CloudFrontへアクセスしてきた日次のリクエスト数やデータ転送量の合計値を求めることがあったため、
備忘録として残します。

必要な設定

  • AWS CLIの設定
  • CloudFrontがあるAWSアカウントでIAMユーザ + アクセスキーを取得しておく

CloudFrontのUsageで使用量を確認できるが、、

CloudFrontのマネージメントコンソールのUsageで個別のDistribution毎に特定期間の使用量を指定すると確認できます。
が、細かく時間を絞っての確認は出来ない仕様になっています。
そういった場合は、CloudWatchのAWS CLIのget-metric-statisticsを使って集計することが可能です。

a86_CloudFront使用量.png


a86_リクエスト転送量.png


リクエスト数合計の取得


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へ通知するなど、いろいろと便利そうです。