Lamdbaの1日あたりの実行回数をFunction毎に出力するワンライナー

list-metrics でメトリクス一覧を取得して、
get-metric-stastics で1日の実行回数の合計を取得しています。

list-metrics のオプションとgrep周りはかなり改善の余地がありそうなのと、
1日毎の実行回数決め打ちになっている部分は工夫の余地がありそうですが、
ワンライナーさくっと試す分には十分便利かなーと思います。

region="ap-northeast-1"

aws cloudwatch list-metrics --output json --region ${region} | \
 jq -r '.Metrics[] | [ .Namespace ,.MetricName ,.Dimensions[].Name ,.Dimensions[].Value ] | @csv'   | \
 sort -t ',' -k 1,2 | \
 grep Invocations | grep Lambda | grep '"Resource"' | \
 awk -F ',' '{print $NF}' | while read line
do
  sum=`aws cloudwatch get-metric-statistics \
   --namespace AWS/Lambda \
   --metric-name Invocations \
   --statistics Sum \
   --dimension Name=FunctionName,Value=${line} \
   --start-time 2019-12-07T23:18:00Z \
   --end-time 2019-12-08T23:18:00Z \
   --period 86400 \
   --region ${region} | jq .Datapoints[].Sum`
  if [ -z ${sum} ]; then
    sum=0
  fi
  echo ${line}, ${sum}
done