aws lambda list-functions 只过滤掉函数名称?
Posted
技术标签:
【中文标题】aws lambda list-functions 只过滤掉函数名称?【英文标题】:aws lambda list-functions filter out just function names? 【发布时间】:2018-07-01 08:59:03 【问题描述】:我只想取回函数名列表。理想情况下,我想获得以“some-prefix*”开头的所有函数(只是它们的名称)。我可以用 cli 做到这一点吗?
如果可能的话,真的希望它作为一个 cli 命令(我想避免使用 python 或其他 sdk)。我看到有一个--cli-input-json
arg,我可以用它来过滤吗?
【问题讨论】:
通过 jq 管道结果怎么样? 不,该函数不允许您仅请求名称以给定前缀开头的那些 Lambda 函数。您必须将它们全部获取并过滤掉您不想要的。 【参考方案1】:你可以这样做。使用--query
选项。 CLI 如下所示:
aws lambda list-functions --region us-east-1 --query 'Functions[].FunctionName' --output text
获取名称以some-prefix
开头的函数列表:
aws lambda list-functions --region us-east-1 --query 'Functions[?starts_with(FunctionName, `some-prefix`) == `true`].FunctionName' --output text
要获取完整的 JSON,CLI 将是:
aws lambda list-functions --region us-east-1
关于query
参数的详细信息可以在here找到。
【讨论】:
你的英雄,但我对这个命令有疑问:aws lambda list-functions --region us-east-1 --query 'Functions[?starts_with(FunctionName,
myfuncs) ==
true].FunctionName' --output text
在它返回的字符串之间添加了一些空格。我可以选择分隔符吗?
我不确定这是否可能。我们要做的是:将其放入for
循环中,以便我们逐行获取详细信息。如果您打印超过 1 个项目(在这种情况下不是 FunctionName,CLI 将在 1 行中返回 1 个函数的所有详细信息。
@red888 aws lambda list-functions --region us-east-1 --query 'Functions[?starts_with(FunctionName, 'some-prefix-') == true].FunctionName' | jq '.[]' -r
或aws lambda list-functions --region us-east-1 --query 'Functions[?starts_with(FunctionName, 'some-prefix-') == true].FunctionName' | jq "join($SEPARATOR)"
这些输出文件保存在哪里?我使用了这个命令但找不到输出文件【参考方案2】:
@krishna 已经给出了答案,但我正在寻找一种方法来打印所有函数名称而不指定前缀。所以在这里您可以获取特定区域的所有 lambda 函数名称,我的默认值为 us-west-2
。
aws lambda list-functions --query 'Functions[*].[FunctionName]'
或者因为我希望它们以文本格式和空格分隔以在我的 bash 脚本中使用,所以在这里您可以输入文本和单行空格分隔。
aws lambda list-functions --query 'Functions[*].[FunctionName]' --output text | tr '\r\n' ' '
【讨论】:
【参考方案3】:我来这里是为了清理我在遵循 AWS 开发人员认证教程时创建的所有 lambda 函数。如果有人在同一条船上,我创建了一个脚本以编程方式删除我的 AWS 账户中的所有 lambda 函数(不用于生产用途)
#!/bin/bash
# STOP: DON'T USE/RUN THIS SCRIPT UNLESS YOU ARE 100% SURE WHAT YOU ARE DOING
# I am a learner and created 20+ lambda functions while following a tutorial
# I wrote this script to programatically cleanup functions at the end of course
# precondition: your aws cli is configured
# get all functions from aws account
functions=(`aws lambda list-functions --query 'Functions[*].[FunctionName]' --output text`)
for i in "$functions[@]"
do
#delete functions 1-by-1
aws lambda delete-function --function-name "$i"
echo "deleted $i"
done
【讨论】:
【参考方案4】:此外,我的建议是使用 aws-shell,这是 AWS CLI 的交互式生产力助推器。
自动补全和历史记录功能让生活变得非常轻松。
【讨论】:
以上是关于aws lambda list-functions 只过滤掉函数名称?的主要内容,如果未能解决你的问题,请参考以下文章
AWS lambda 和 AWS Lambda@EDGE 有啥区别?
从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数
AWS Lambda 无法调用没有 VPC 的另一个 AWS Lambda - NodeJs