1

Hi I was trying to use AWS Rekognition -> Lambda -> AWS API -> Bubble.io I want to pass a image base64 code to process the image recognition.

Here is the lambda code:

import json
import boto3
import base64


def lambda_handler(event, context):

    def detect_labels():

        # 1. create a client object, to connect to rekognition
        client=boto3.client('rekognition')


        image = base64.b64decode(event['face'])

        # 4. call Rekognition, store result in 'response'
        response = client.detect_labels(
                Image={
                    'Bytes': image
                    },
                MaxLabels=20,
                )


        #6. Return response from function
        return response


    # Call detect_labels
    response = detect_labels()

    # Return results to API gateway
    return {
        'statusCode': 200,
        'body': json.dumps(response)
        }

and if I test it within the lambda test with config:

{
  "face": "<imgbase64codehere>"
}

It works fine and return success message. However I set the same thing in Bubble.io Setting img. It wont work.

I check the Cloudwatch, the error is:

[ERROR] KeyError: 'face'
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 30, in lambda_handler
    response = detect_labels()
  File "/var/task/lambda_function.py", line 14, in detect_labels
    image = base64.b64decode(event['face'])
[ERROR] KeyError: 'face' Traceback (most recent call last):   File "/var/task/lambda_function.py", line 30, in lambda_handler     response = detect_labels()   File "/var/task/lambda_function.py", line 14, in detect_labels     image = base64.b64decode(event['face'])

I am sure there is not connection problem (if I dont use JSON it works fine) So what do I do wrong in the setting? Thanks for your help in advance

Harley
  • 11
  • 1

1 Answers1

0

In your test you are sending an input of just a JSON request with face.

It looks like the implementation you've setup uses Amazon API Gateway. If you are doing that your Lambda function might receive the event in a different format depending on how you've implemented the API Gateway integration.

The Lambda developer guide has an example of the JSON format. You will probably want to access the body attribute.

Mark Sailes
  • 727
  • 4
  • 16