No pagination with the AWS CLI
How do you get all the results from an AWS CLI query without pagination?
Published: Thursday, Oct 17, 2024 Last modified: Monday, Dec 9, 2024
❯ aws --version
aws-cli/2.17.64 Python/3.12.6 Darwin/23.6.0 source/arm64
Since there is no V2 of https://docs.aws.amazon.com/cli/v1/userguide/cli-usage-pagination.html … here’s the missing guide and example:
❯ cat engine_types.sh
#!/bin/bash
# Initialize the starting token as empty
next_token=""
# Loop until there's no NextToken
while true; do
if [ -z "$next_token" ]; then
# Get the first page of results
result=$(aws rds describe-db-instances --output json)
else
# Get the next page using the starting token
result=$(aws rds describe-db-instances --starting-token "$next_token" --output json)
fi
# Extract the desired fields and print them as CSV
echo "$result" | jq -r '.DBInstances[] | [.DBInstanceIdentifier, .Engine] | @csv'
# Get the NextToken from the result
next_token=$(echo "$result" | jq -r '.NextToken')
# If there's no NextToken, break the loop
if [ "$next_token" == "null" ]; then
break
fi
done
Note you can’t use --query
as that will exclude the NextToken, hence you need to rely on jq
to extract the fields you want.