在 AWS 账户中搜索所有 AWS Lambda 函数的环境变量的值

Gle*_*iko 6 amazon-web-services aws-cli aws-lambda

我有一个包含大量 AWS Lambda 函数的 AWS 帐户,我想检查所有函数的所有环境变量,并尝试找到在那里使用某些特定值的函数。如果不手动检查 AWS 控制台中的每个功能,我该如何做到这一点?AWS CLI 允许这样做吗?

ken*_*kas 8

是的,AWS CLI 允许您检查 Lambda 环境变量。要使其端到端自动化,您需要将一些命令链接在一起。另外,我默认使用jq繁重的工作。我确信 JMESPath 中有一种方法可以做到这一点,但我没有时间弄清楚。

以下是其工作原理的概述:

  1. 通过调用获取 Lambda 函数名称列表,list-functions并将该列表作为文本传递给xargs
  2. 获取上一步的输出,并使用它通过调用 来获取所有 Lambda 函数配置详细信息get-function-configuration
  3. 将该输出通过管道传输到jq,确保该Environment字段不为空并搜索所需的变量。在本例中,我正在搜索一个名为 的变量customer,其值为shared_services
  4. 输出 Lambda 函数名称。

代码:

aws lambda list-functions --query 'Functions[*].[FunctionName]' --output text | xargs -I {} aws lambda get-function-configuration --function-name {} | jq -r 'select((.Environment) and select(.Environment.Variables.customer == "shared_services"))| .FunctionName'
Run Code Online (Sandbox Code Playgroud)

输出

copy_snaps_shared_services
snapshot_by_customer

参考

JQ 手动
JQ 迭代前密钥的存在
AWS CLI 使用示例
AWS Lambda 获取函数配置
AWS Lambda 列表函数