I am trying to filter output of boto3 iam list_roles method. So i would like to get roles which have Pricipal as AWS mentioned in AssumeRolePolicyDocument. I would like to omit all roles which have Principal as service in AssumeRolePolicyDocument. This working for jq but not with pyjq
import pyjq
import boto3
import re
import json
client = boto3.client("iam")
paginator = client.get_paginator('list_roles')
response_iterator = paginator.paginate()
for page in response_iterator:
role_list = json.dumps(page['Roles'], indent=4, sort_keys=True, default=str)
my_data = pyjq.all(".[].AssumeRolePolicyDocument.Statement[].Principal.AWS",role_list)
print(my_data)
But this is throwing error
Traceback (most recent call last):
File "iam.py", line 16, in <module>
my_data = pyjq.all(".[].AssumeRolePolicyDocument.Statement[].Principal.AWS",role_list)
File "/home/ssm-user/.local/lib/python3.7/site-packages/pyjq.py", line 50, in all
return compile(script, vars, library_paths).all(_get_value(value, url, opener))
File "_pyjq.pyx", line 211, in _pyjq.Script.all
_pyjq.ScriptRuntimeError: Cannot iterate over string ("[\n {\n...)
Appreciate any suggestions on how to fix above issue?