Home > OS >  AWS CLI query and filter for Step Functions
AWS CLI query and filter for Step Functions

Time:12-25

I would like to get Step Function ARN using AWS CLI by name with wildcard strig or get Step Function ARN by Step Function name

Here is an example:

    aws stepfunctions list-state-machines --region us-east-1

I got this:

{
    "stateMachines": [
        {
            "stateMachineArn": "arn:aws:states:us-east-1:012345678912:stateMachine:firstStepFunc",
            "name": "firstStepFunc",
            "type": "STANDARD",
            "creationDate": "2022-12-01T14:43:09.577000 01:00"
        }
    ]
}

I tried this one:

    aws stepfunctions list-state-machines --query 'stateMachines[*].stateMachineArn' --region us-east-1 --output text

And get expected result:

    arn:aws:states:us-east-1:012345678912:stateMachine:firstStepFunc

But if Step Functions will be more than one, it won't work.

I need something like that, but I have no idea how to write query in proper way:

    aws stepfunctions list-state-machines --query 'stateMachines[*].stateMachineArn[?stateMachineArn==`*`]' --region us-east-1
    aws stepfunctions list-state-machines --query 'stateMachines[*].stateMachineArn[?name==`*`]' --region us-east-1

Thanks in advance!

CodePudding user response:

You could use contains functions for this, for example:

aws stepfunctions list-state-machines --query 'stateMachines[?contains(name,`dev`)]|[*].stateMachineArn' --region us-east-1 --output text

The expression above returns the ARN of all stepfunctions which have the dev keyword in their name. If you want to get only one (the first one, for example), you can do the following:

aws stepfunctions list-state-machines --query 'stateMachines[?contains(name,`dev`)]|[0].stateMachineArn' --region us-east-1 --output text
  • Related