我可以通过以下方式获取详细信息
$ aws lambda get-function --function-name random_number
{
"Configuration": {
"FunctionName": "random_number",
"FunctionArn": "arn:aws:lambda:us-east-2:193693970645:function:random_number",
"Runtime": "ruby2.5",
"Role": "arn:aws:iam::193693970645:role/service-role/random_number-role-8cy8a1a7",
...
但是如何仅获得几个字段,例如函数名?
我尝试过:
$ aws lambda get-function --function-name random_number --query "Configuration[*].[FunctionName]"
但是我得到null
答案 0 :(得分:2)
您的总体方法是正确的,您只需要调整查询:
$ aws lambda get-function --function-name random_number \
--query "Configuration.FunctionName" --output text
我还添加了一个参数,可将结果转换为文本,从而使处理变得容易一些。
答案 1 :(得分:1)
这是一个简单的awk
(标准Linux gnu awk)脚本,可以完成以下工作:仅对具有/ FunctionName /的行提取引用字段#3的值。
awk 'BEGIN {FPAT="\"[^\"]+"}/FunctionName/{print substr($3,2)}'
使用您的初始命令:
$ aws lambda get-function --function-name random_number | awk 'BEGIN {FPAT="\"[^\"]+"}/FunctionName/{print substr($3,2)}'
答案 2 :(得分:0)
实现此目标的一种方法是使用jq。 因此,输出必须为JSON。
从文档中:
jq就像sed一样用于JSON数据-您可以使用它来切片和过滤并 映射和转换结构化数据的方式与sed,awk, grep和朋友可以让您玩文字游戏。
用法示例:
aws lambda get-function --function-name test --output json | jq -r '.Configuration.FunctionName'
答案 3 :(得分:-2)
按如下所示使用get-function-configuration
:
aws lambda get-function-configuration --function-name MyFunction --query "[FunctionName]"