Resolución de problemas de sus autorizadores - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Resolución de problemas de sus autorizadores

En este tema se explican los problemas más comunes que pueden causar problemas en los flujos de trabajo de autenticación personalizada y los pasos para resolverlos. Para solucionar los problemas de forma más eficaz, habilite los registros de CloudWatch AWS IoT Core y defina el nivel de registro en DEBUG. Puede habilitar CloudWatch los registros en el AWS IoT Core consola (https://console.aws.amazon.com/iot/). Para obtener más información sobre cómo habilitar y configurar los registros para AWS IoT Core, consulte Configuración AWS IoT registrar.

nota

Si deja el nivel de registro DEBUGdurante períodos prolongados, es CloudWatch posible que almacene grandes cantidades de datos de registro. Esto puede aumentar sus CloudWatch cargos. Considere la posibilidad de utilizar el registro basado en recursos para aumentar la verbosidad solo para los dispositivos de un grupo de objetos concreto. Para obtener más información sobre el registro basado en recursos, consulte Configuración AWS IoT registrar. Además, cuando haya terminado de solucionar problemas, reduzca el nivel de registro a un nivel menos detallado.

Antes de empezar a solucionar problemas, consulte Comprender el flujo de trabajo de autenticación personalizada para obtener una visión general del proceso de autenticación personalizada. Esto le ayudará a entender dónde buscar el origen del problema.

En este tema se analizan las dos áreas siguientes para que las investigue.

  • Cuestiones relacionadas con la función de Lambda de su autorizador.

  • Problemas relacionados con el dispositivo.

Comprobar si hay problemas con la función de Lambda de su autorizador

Lleve a cabo los siguientes pasos para asegurarse de que los intentos de conexión de sus dispositivos estén invocando la función de Lambda.

  1. Compruebe qué función de Lambda está asociada a su autorizador.

    Puede hacerlo llamando al autorizador deseado DescribeAuthorizerAPIo haciendo clic en él en la sección Seguridad del AWS IoT Core console.

  2. Compruebe las métricas de invocación de la función de Lambda. Para ello, siga estos pasos.

    1. Abra el icono AWS Lambda console (https://console.aws.amazon.com/lambda/) y seleccione la función asociada a su autorizador.

    2. Seleccione la pestaña Monitorizar y consulte las métricas correspondientes al período de tiempo correspondiente a su problema.

  3. Si no ve ninguna invocación, compruébelo AWS IoT Core tiene permiso para invocar la función Lambda. Si ve invocaciones, vaya directamente al siguiente paso. Lleve a cabo los siguientes pasos para comprobar que la función de Lambda tiene los permisos necesarios.

    1. Seleccione la pestaña Permisos para su función en la AWS Lambda console.

    2. Busque la sección Política basada en recursos en la parte inferior de la página. Si la función de Lambda tiene los permisos necesarios, la política tiene el aspecto que se muestra en el siguiente ejemplo.

      { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "Id123", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:111111111111:function:FunctionName", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:iot:us-east-1:111111111111:authorizer/AuthorizerName" }, "StringEquals": { "AWS:SourceAccount": "111111111111" } } } ] }
    3. Esta política concede el InvokeFunction permiso para ejercer su función a la AWS IoT Core director. Si no lo ves, tendrás que añadirlo mediante AddPermissionAPI. En el siguiente ejemplo, se muestra cómo hacerlo mediante el AWS CLI.

      aws lambda add-permission --function-name FunctionName --principal iot.amazonaws.com --source-arn AuthorizerARn --statement-id Id-123 --action "lambda:InvokeFunction"
  4. Si ve invocaciones, compruebe que no haya errores. Un error podría indicar que la función Lambda no está gestionando correctamente el evento de conexión que AWS IoT Core le envía.

    Para obtener información sobre cómo gestionar el evento en la función de Lambda, consulte Definición de la función de Lambda. Puede utilizar la función de prueba en el AWS Lambda console (https://console.aws.amazon.com/lambda/) para codificar de forma rígida los valores de prueba en la función y asegurarse de que la función gestiona los eventos correctamente.

  5. Si ve invocaciones sin errores, pero sus dispositivos no pueden conectarse (ni publicar, suscribirse ni recibir mensajes), el problema podría deberse a que la política que devuelve la función de Lambda no concede permisos para las acciones que los dispositivos están intentando realizar. Lleve a cabo los siguientes pasos para determinar si hay algún problema con la política que devuelve la función.

    1. Utilice una consulta de Amazon CloudWatch Logs Insights para escanear los registros durante un período breve y comprobar si hay errores. El siguiente ejemplo de consulta ordena los eventos por marca de tiempo y busca errores.

      display clientId, eventType, status, @timestamp | sort @timestamp desc | filter status = "Failure"
    2. Actualice la función Lambda para registrar los datos a los que regresa AWS IoT Core y el evento que activa la función. Puede usar estos registros para inspeccionar la política que crea la función.

  6. Si ve invocaciones sin errores, pero sus dispositivos no pueden conectarse (ni publicar, suscribirse ni recibir mensajes), otro motivo puede ser que la función de Lambda supere el límite de tiempo de espera. El límite de tiempo de espera de la función de Lambda para el autorizador personalizado es de 5 segundos. Puede comprobar la duración de la función en CloudWatch registros o métricas.

Investigar problemas con los dispositivos

Si no encuentra problemas al invocar la función de Lambda o con la política que devuelve la función, busque problemas con los intentos de conexión de sus dispositivos. Las solicitudes de conexión mal formadas pueden provocar AWS IoT Core no activar su autorizador. Los problemas de conexión pueden producirse tanto en la capa de aplicación como en TLS la capa de aplicación.

Posibles problemas con las TLS capas:

  • Los clientes deben incluir un encabezado de nombre de host (HTTP, MQTT over WebSockets) o la TLS extensión de indicación del nombre del servidor (HTTP, MQTT over WebSockets,MQTT) en todas las solicitudes de autenticación personalizadas. En ambos casos, el valor transferido debe coincidir con uno de los valores de su cuenta AWS IoT Core puntos finales de datos. Estos son los puntos finales que se devuelven al ejecutar los siguientes CLI comandos.

    • aws iot describe-endpoint --endpoint-type iot:Data-ATS

    • aws iot describe-endpoint --endpoint-type iot:Data(para puntos VeriSign finales antiguos)

  • Los dispositivos que utilizan la autenticación personalizada para MQTT las conexiones también deben pasar la TLS extensión Application Layer Protocol Negotiation (ALPN) con un valor demqtt.

  • La autenticación personalizada actualmente solo está disponible en el puerto 443.

Posibles problemas en la capa de aplicación:

  • Si la firma está habilitada (el campo signingDisabled es falso en su autorizador), busque los siguientes problemas de firma.

    • Asegúrese de pasar la firma simbólica en el encabezado x-amz-customauthorizer-signature o en un parámetro de cadena de consulta.

    • Asegúrese de que el servicio no firme un valor distinto del token.

    • Asegúrese de pasar el token al encabezado o parámetro de consulta que especificó en el campo token-key-name de su autorizador.

  • Asegúrese de que el nombre del autorizador que pasa en el encabezado x-amz-customauthorizer-name o la cadena de consulta es válido o de que ha definido un autorizador predeterminado para su cuenta.