我想要确认正在使用Lambda函数的运行时数量

首先

请将您的函数迁移到更新的运行时版本,因为Node.js 8.10已经结束生命周期了。关于Node.js 8在各个地区的使用情况,这里留下了确认方法的备忘录。

總而言之

在准备就绪的情况下,执行下列内容的Shell脚本。

#!/bin/bash
region_list=$(aws ec2 describe-regions|jq -r '.[][].RegionName'|sort)
runtime_list=$(for x in $region_list; do aws --region $x lambda list-functions| jq -cr '.[][]|.Runtime'; done)
key_list=$(echo "$runtime_list" | sort -u)
total=$(echo "$runtime_list"|wc -l)
for x in $key_list; do c=$(echo "$runtime_list" | grep $x | wc -l); p=$(echo "scale=2; 100 * $c / $total"|bc -l); echo "$x: $c ($p%)"; done

预先准备

软件

需要准备AWS CLI和jq。如果您使用Linux或Mac,可能已经默认安装了它们。

权限

该用户需要具备以下权限。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EC2DescribeRegions",
            "Effect": "Allow",
            "Action": "ec2:DescribeRegions",
            "Resource": "*"
        },
        {
            "Sid": "LambdaListFunctions",
            "Effect": "Allow",
            "Action": "lambda:ListFunctions",
            "Resource": "*"
        }
    ]
}

按照顺序执行

获取区域列表

首先,使用 aws ec2 describe-regions 命令来获取区域列表。
然后,使用 jq 对区域名称进行加工,生成仅包含区域名称的列表。

region_list=$(aws ec2 describe-regions|jq -r '.[][].RegionName'|sort)
echo "$region_list"
# 例えば、こんな結果が得られる。
#   ap-northeast-1
#   ap-northeast-2
#   ap-south-1
#   ap-southeast-1
#   ap-southeast-2
#   ca-central-1
#   eu-central-1
#   eu-north-1
#   eu-west-1
#   eu-west-2
#   eu-west-3
#   sa-east-1
#   us-east-1
#   us-east-2
#   us-west-1
#   us-west-2

函数列表

接下来,使用命令 “aws –region region-name lambda list-functions” 获取每个区域的函数列表。
然后,使用 jq 对列表进行处理,仅保留运行时名称。

runtime_list=$(for x in $region_list; do aws --region $x lambda list-functions| jq -cr '.[][]|.Runtime'; done)
echo "$runtime_list"
# 例えば、こんな結果が得られる。
#   nodejs8.10
#   python3.6
#   nodejs8.10
#   python3.7
#   nodejs8.10
#   python3.7
#   nodejs8.10
#   provided
#   nodejs8.10
#   nodejs8.10
#   nodejs8.10
#   nodejs8.10
#   nodejs8.10
#   provided
#   python3.6
#   python3.6
#   nodejs10.x
#   python3.6

获取运行时名称的唯一值

接下来,从只包含运行时名称的列表中提取唯一值。

key_list=$(echo "$runtime_list" | sort -u)
echo "$key_list"
# 例えば、こんな結果が得られる。
#   nodejs10.x
#   nodejs8.10
#   provided
#   python3.6
#   python3.7

计数

最后,统计使用各自运行环境的函数数量。

total=$(echo "$runtime_list"|wc -l)
echo $total
for x in $key_list; do c=$(echo "$runtime_list" | grep $x | wc -l); p=$(echo "scale=2; 100 * $c / $total"|bc -l); echo "$x: $c ($p%)"; done
# 例えば、こんな結果が得られる。
#   nodejs10.x: 1 (5.55%)
#   nodejs8.10: 9 (50.00%)
#   provided: 2 (11.11%)
#   python3.6: 4 (22.22%)
#   python3.7: 2 (11.11%)
广告
将在 10 秒后关闭
bannerAds