jsondjangoamazon-web-servicesboto3amazon-machine-learning

Unable to use json.loads on boto3.client.get_batch_predictions()


I'm getting the following error when trying to parse a json response

expected string or buffer

Within my Django model I have the following:

def get_batch_prediction(self):
    client = boto3.client('machinelearning', region_name=settings.region, aws_access_key_id=settings.aws_access_key_id, aws_secret_access_key=settings.aws_secret_access_key)
    return client.get_batch_prediction(
        BatchPredictionId=str(self.id)
        )

I then call it like so

batch = BatchPrediction.objects.get(id=batch_id)
response = batch.get_batch_prediction()
response = json.loads(response)

I know the response is json so I expected this to change it to a dictionary but, instead, I get the error above.

What's going on?


Solution

  • The boto3 docs suggest that get_batch_prediction returns a dictionary not a string. You shouldn't have to use json.loads().