如何使用JMESPath列出对象的属性名称(Azure逻辑应用场景)
如何用JMESPath仅获取Logic App触发器的名称?
我需要查询Azure Logic App的触发器名称,但触发器的属性名称是未知的。当前使用以下Azure CLI命令:
az logic workflow list --query "[].{name:name, triggers:definition.triggers}"
得到的输出示例如下:
[ { "name": "MyFirstLogicApp", "triggers": { "When_I_upload_a_new_video": { ...bunch of json... } } }, { "name": "MySecondLogicApp", "triggers": { "When_an_S3_object_is_updated": { ...bunch of json... } } }, { "name": "MyThirdLogicApp", "triggers": { "When_a_file_is_created_(properties_only)_(V2)": { ...bunch of json... } } }, { "name": "MyFourthLogicApp", "triggers": { "When_a_file_is_modified_(properties_only)_(V2)": { ...bunch of json... } } } ]
请问有没有办法仅获取触发器的名称,而不返回其对应的JSON值?
可以通过JMESPath的keys()函数提取对象的属性名称,直接修改Azure CLI的--query参数即可实现需求:
方案1:返回触发器名称数组(支持多触发器场景)
如果Logic App可能存在多个触发器,用keys()函数返回所有触发器名称的数组:
az logic workflow list --query "[].{name:name, triggerNames:keys(definition.triggers)}"
输出示例:
[ { "name": "MyFirstLogicApp", "triggerNames": [ "When_I_upload_a_new_video" ] }, { "name": "MySecondLogicApp", "triggerNames": [ "When_an_S3_object_is_updated" ] } ]
方案2:返回单个触发器名称(适用于单触发器场景)
如果确认每个Logic App只有一个触发器,可以直接取数组的第一个元素:
az logic workflow list --query "[].{name:name, triggerName:keys(definition.triggers)[0]}"
输出示例:
[ { "name": "MyFirstLogicApp", "triggerName": "When_I_upload_a_new_video" }, { "name": "MySecondLogicApp", "triggerName": "When_an_S3_object_is_updated" } ]
内容的提问来源于stack exchange,提问作者Josh Withee
相关产品推荐
相关产品推荐

