Python | How to parse JSON from results from AWS response?
As per the boto3 docs [http://boto3.readthedocs.io/en/latest/reference/services/elasticbeanstalk.html?highlight=describe_instances_health#ElasticBeanstalk.Client.describe_instances_health], the describe_instances_health method returns dict and not json. Hence, there is no need for you to do the conversion. To get VersionLabel from data, use -
data ['InstanceHealthList'][0]['Deployment']['VersionLabel']
Edit : Note that the above fetches the VersionLabel for the first instance, out of possible multiple instances. In case you have multiple instances and they happen to have different values of VersionLabel, then you would require additional logic to get the one you need.
Comments
-
devxvda1 almost 3 years
I was trying to get the value of
VersionLabel
which isphp-v1
but my code doesn't work properly and I don't know what I'm doing wrong.Could you please let me know what's wrong and how can I parse the
php-v1
?This is my error message.
TypeError: the JSON object must be str, not 'dict'
This is my code.
#!/usr/bin/env python3 import boto3 import json def get_label(): try: env_name = 'my-env' eb = boto3.client('elasticbeanstalk') response = eb.describe_instances_health( EnvironmentName=env_name, AttributeNames=[ 'Deployment' ] ) #print(response) data = json.loads(response) print(data['VersionLabel']) except: raise if __name__ == '__main__': get_label()
This is the response I got from AWS when
print(response)
is invoked.{ 'InstanceHealthList':[ { 'InstanceId':'i-12345678', 'Deployment':{ 'DeploymentId':2, 'DeploymentTime':datetime.datetime(2016, 9, 29, 4, 29, 26, tzinfo=tzutc()), 'Status':'Deployed', 'VersionLabel':'php-v1' } } ], 'ResponseMetadata':{ 'HTTPStatusCode':200, 'RequestId':'12345678-1234-1234-1234-123456789012', 'RetryAttempts':0, 'HTTPHeaders':{ 'content-length':'665', 'content-type':'text/xml', 'date':'Sat, 01 Oct 2016 11:04:56 GMT', 'x-amzn-requestid':'12345678-1234-1234-1234-123456789012' } } }
Thanks so much!
-
rustyMagnet about 3 yearsThumbs-down for AWS Responses having such deep nesting...