如何通过AWS CLI按名称(含通配符)获取Step Function ARN
通过AWS CLI按名称(含通配符)获取Step Function ARN
方法1:用AWS CLI原生--query(JMESPath)筛选
AWS CLI的--query参数基于JMESPath语法,支持多种字符串匹配方式,包括通配符:
匹配名称包含指定字符串:
aws stepfunctions list-state-machines --region us-east-1 --query 'stateMachines[?contains(name, "MyWorkflow")].stateMachineArn'匹配名称以指定前缀开头:
aws stepfunctions list-state-machines --region us-east-1 --query 'stateMachines[?starts_with(name, "Order-")].stateMachineArn'匹配名称以指定后缀结尾:
aws stepfunctions list-state-machines --region us-east-1 --query 'stateMachines[?ends_with(name, "-Prod")].stateMachineArn'使用通配符模糊匹配(
*匹配任意长度字符,?匹配单个字符):aws stepfunctions list-state-machines --region us-east-1 --query 'stateMachines[?name like `*Test*`].stateMachineArn'注意:JMESPath的
like表达式中,通配符字符串必须用反引号(`)包裹,不能用单引号。
方法2:结合jq/grep处理复杂正则匹配
如果需要更灵活的正则匹配,可先输出完整JSON,再用jq筛选:
aws stepfunctions list-state-machines --region us-east-1 | jq '.stateMachines[] | select(.name | test("^Order.*Prod$")) | .stateMachineArn'
这里的test("^Order.*Prod$")表示匹配以Order开头、Prod结尾的名称,可根据需求修改正则表达式。
或者用grep结合文本输出快速筛选:
aws stepfunctions list-state-machines --region us-east-1 --output text | grep -E "MyWorkflow.*arn:aws:states" | awk '{print $2}'
内容的提问来源于stack exchange,提问作者Dmytro Melnychenko
相关产品推荐
相关产品推荐

