【问题标题】:aws lambda list-functions filter out just function names?aws lambda list-functions 只过滤掉函数名称?
【发布时间】:2018-07-01 08:59:03
【问题描述】:

我只想取回函数名列表。理想情况下,我想获得以“some-prefix*”开头的所有函数(只是它们的名称)。我可以用 cli 做到这一点吗?

如果可能的话,真的希望它作为一个 cli 命令(我想避免使用 python 或其他 sdk)。我看到有一个--cli-input-json arg,我可以用它来过滤吗?

【问题讨论】:

  • 通过 jq 管道结果怎么样?
  • 不,该函数不允许您仅请求名称以给定前缀开头的那些 Lambda 函数。您必须将它们全部获取并过滤掉您不想要的。

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


【解决方案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 的交互式生产力助推器。

      自动补全和历史记录功能让生活变得非常轻松。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 2019-06-03
        • 2019-12-11
        • 2017-12-26
        • 1970-01-01
        • 2012-04-23
        相关资源
        最近更新 更多