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

pymssql 包不适用于 aws 中的 lambda

如何在 AWS Lambda 中运行 AWS SDK Opsworks 命令?

AWS CloudFormation:如何从另一个AWS账户为Lambda代码指定存储桶?