Menu
blog.headdesk.me
blog.headdesk.me

Working with JSON output from AWSCLI

Posted on 2014/03/252015/02/02

The program looks short but the way Python handles JSON is not very elegant. JSON is supposed to be a serialized object, so it should be processed as an object. But here, it’s processed as an array.

[python]
#!/usr/bin/python
import json
import sys

print "Usage: cat JSON | BasicParse.py | column -t"
jsonInput = sys.stdin
awsObject = json.load(jsonInput)

instances = awsObject[‘Reservations’]

for instance in instances:
print instance[‘Instances’][0][‘Tags’][0][‘Value’], instance[‘Instances’][0][‘InstanceId’], instance[‘Instances’][0][‘PublicDnsName’]
[/python]

Not only that, there is no type definition with any of the variables. I have no idea what was returned by json.load.

Also, exception handling is quite poor. I tried to do a try-except block but the program got stuck with no stdin was piped. If I try to read from stdin and calculate the length, the read line is consumed and I couldn’t go back.

Anyway, this program will take output from awscli (json format) and extract 3 fields that I want.

On a relevant note, it is also possible to use the –query option to narrow down the search fields. For example

$ aws ec2 describe-volumes --output=text --query 'Volumes[*].{ID:VolumeId,Size:Size}'
vol-d74xxx93	30
vol-784xxx3c	30
vol-854xxxc1	60

 

Loading

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Full text search

Recent Posts

  • Generate secure password
  • AWS Compute Savings Plans
  • AWS Zonal Shift
  • Coffee break…
  • Prevent private key from being committed to git
  • aws (14)
  • coffee (2)
  • headfi (1)
  • linux (9)
  • others (61)
  • security (2)
  • tech (41)
  • terraform (3)
  • wordpress (2)

Loading

apache aws awscli azure backup boot cloud coffee docker ec2 EL8 ElasticBeanstalk espresso featured git kernel lelit linux lvm meltdown MFA nat gateway php power proliant python rdp Redhat RHEL rpm Ryzen scp security smartarray smart switch snapshot spectre tech terraform ubuntu ubuntu upgrade vpn windows wordpress workspace

©2026 blog.headdesk.me | Powered by SuperbThemes