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

时间:2019-10-11 13:55:29

标签: amazon-web-services aws-lambda aws-cli

我有一个拥有大量AWS Lambda函数的AWS账户,我想检查所有函数的所有环境变量,并尝试在其中查找使用某些特定值的函数。如何在不手动检查AWS控制台中每个功能的情况下做到这一点? AWS CLI允许吗?

2 个答案:

答案 0 :(得分:2)

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

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

  1. 通过调用list-functions获取Lambda函数名称列表,并将该列表作为文本通过管道传递到xargs
  2. 获取上一步的输出,并通过调用get-function-configuration将其用于获取所有Lambda函数配置详细信息。
  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'

输出

  

copy_snaps_shared_services
  snapshot_by_customer

参考

JQ Manual
JQ Presence of Key before Iterating
AWS CLI Usage Examples
AWS Lambda Get Function Configuration
AWS Lambda List Functions

答案 1 :(得分:1)

您应该能够使用AWS CLI get-function来获取有关Lambda函数的元数据。返回的元数据包括用于下载部署程序包的预签名URL。您可以下载部署包,解压缩它,然后在源代码中搜索对您正在寻找的环境变量的引用。

看一下这个脚本,看看如何轻松完成它: https://gist.github.com/nemaniarjun/defdde356b6678352bcd4af69b7fe529