【发布时间】:2020-02-09 01:44:22
【问题描述】:
我有一个拥有大量 AWS Lambda 函数的 AWS 账户,我想检查所有函数的所有环境变量,并尝试在那里找到使用某些特定值的函数。如果不手动检查 AWS 控制台中的每个功能,我该如何做到这一点? AWS CLI 是否允许这样做?
【问题讨论】:
标签: amazon-web-services aws-lambda aws-cli
我有一个拥有大量 AWS Lambda 函数的 AWS 账户,我想检查所有函数的所有环境变量,并尝试在那里找到使用某些特定值的函数。如果不手动检查 AWS 控制台中的每个功能,我该如何做到这一点? AWS CLI 是否允许这样做?
【问题讨论】:
标签: amazon-web-services aws-lambda aws-cli
是的,AWS CLI 允许您检查 Lambda 环境变量。要使其端到端自动化,您需要将一些命令链接在一起。另外,我默认使用jq 进行繁重的工作。我确信在 JMESPath 中有一种方法可以做到这一点,但我没有时间弄清楚。
以下是其工作原理的概述:
list-functions 获取 Lambda 函数名称列表,并将该列表作为文本传送到 xargs
get-function-configuration 获取上一步的输出并使用它来获取所有 Lambda 函数配置详细信息。jq,确保Environment 字段不为空并搜索所需的变量。在这种情况下,我正在搜索一个名为 customer 的变量,其值为 shared_services。代码:
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
【讨论】:
您应该能够使用AWS CLI get-function 获取有关 Lambda 函数的元数据。返回的元数据包括用于下载部署包的预签名 URL。您可以下载部署包,将其解包,然后搜索源代码以查找对您正在查找的环境变量的引用。
看看这个脚本,看看它是如何轻松完成的: https://gist.github.com/nemaniarjun/defdde356b6678352bcd4af69b7fe529
【讨论】: