Error al intentar leer el mensaje SNS de AWS

Necesito devolver el mensaje enviado por Rekognition a SNS pero recibo este error en CloudWatch:

‘Registros’: KeyError Traceback (última llamada más reciente): Archivo “/var/task/AnalyzeVideo/lambda_function.py”, línea 34, en lambda_handler message = evento [“Registros”] [0] [“Sns”] [” Mensaje “] KeyError: ‘Registros’

Código:

def detect_labels(bucket, key): response = rekognition.start_label_detection( Video = { "S3Object": { "Bucket": BUCKET, "Name": KEY } }, NotificationChannel = { "SNSTopicArn": TOPIC_ARN, "RoleArn": ROLE_ARN } ) return response def lambda_handler(event, context): reko_response = detect_labels(BUCKET, KEY) message = event["Records"][0]["Sns"]["Message"] return message 

Y esta es la forma correcta de implementar el video almacenado de Rekognition en AWS Lambda con python. No encontré ningún ejemplo en él.

Actualizar:

Los pasos que mi aplicación debe tomar son:

  1. En la interfaz, el usuario activa una función lambda con la puerta de enlace API que envía un archivo a s3
  2. Cuando llega el archivo, se activa la misma función lambda para aplicar el reconocimiento de video y enviar ID de trabajo a SNS
  3. cuando SNS recibe un mensaje, se activa la misma función lambda para obtener los datos de la etiqueta y devolver los datos al usuario con la puerta de enlace API

Su función está llamando a rekognition.start_label_detection() (y probablemente haya creado el cliente de rekognition en el código que no se muestra).

Esta llamada a la API inicia la detección de tags en un video. Cuando termine, publicará un mensaje para el tema SNS dado. Puede conectar una función Lambda a SNS para recuperar los detalles de la detección de tags cuando haya terminado.

Sin embargo, su código está confundiendo el orden de las operaciones. En su lugar, deberías estar haciendo lo siguiente:

  • Algo (probablemente no sea una función Lambda) debe llamar a start_label_detection() para comenzar el proceso de escaneo del video. Esto puede tardar varios minutos.
  • Se debe configurar una función Lambda para que se active cuando el tema SNS reciba un mensaje.
  • A la función Lambda se le pasa una copia del mensaje, que se puede usar para llamar a get_label_detection() para recuperar los detalles del análisis.

Por lo tanto, su primer paso es separar la start_label_detection() inicial de start_label_detection() del código que recupera los resultados. Luego, modifique la función Lambda para recuperar los resultados a través de get_label_detection() y procese los resultados.