Python | Comment parser du JSON à partir des résultats de AWS réponse?

J'ai essayé d'obtenir la valeur de VersionLabel qui est php-v1 mais mon code ne fonctionne pas correctement et je ne sais pas ce que je fais mal.

Pourriez-vous s'il vous plaît laissez-moi savoir quel est le problème et comment puis-je analyser le php-v1?

C'est mon message d'erreur.

TypeError: the JSON object must be str, not 'dict'

C'est mon 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()

C'est la réponse que j'ai obtenu à partir d'AWS quand print(response) est invoquée.

{
   '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'
      }
   }
}

Merci beaucoup!

Je ne suis pas un boto3 utilisateur, mais il semble que le décodage json qui a déjà été fait pour vous. Le dict dans response regarder à droite pour vous?
Si votre print(response) est dire des choses telles que datetime.datetime et d'utiliser des guillemets simples (illégal en JSON), il est converti pour vous déjà.
Essayez de commenter #data = json.loads(response) et ajoutez cette ligne à la place: print(response['InstanceHealthList'][0]['Deployment']['VersionLabel']). Est-ce à vous donner le résultat souhaité?
Merci pour le contrôle! Donc, ce qui signifie que je dois arrêter d'utiliser json module? Comment puis-je obtenir la valeur de la VersionLabel?
suggestion devrait le faire.

OriginalL'auteur sedawkgrep | 2016-10-01