Saltar al contenido

¿Cómo acceder a los encabezados HTTP para solicitar a AWS API Gateway usando Lambda?

Hola usuario de nuestra página web, hallamos la solución a lo que estabas buscando, deslízate y la obtendrás a continuación.

Solución:

Primero, necesitas atrapar el Authorization encabezado de la solicitud HTTP GET. Luego, debe asignar ese valor al objeto de evento de Lambda.

Vaya al panel de control del método API y haga clic en Solicitud de método. Allí puedes agregar un HTTP Request Header llamado Authorization Como se muestra abajo.

Encabezados de solicitud HTTP

Esto atrapará al Authorization encabezado para que pueda usarlo más tarde.

Ahora regrese al tablero de métodos y haga clic en Integration Request. Desde aquí, puede pasar el valor del encabezado a la función Lambda mediante una asignación como esta.


    "Authorization": "$input.params('Authorization')"

Ahora en su función Lambda puede obtener un valor como este.

event.Authorization

Puede utilizar la siguiente plantilla de asignación en la solicitud de integración para asignar de forma genérica todos los parámetros de ruta, consulta y encabezado en el evento de Lambda. Aún deberá registrarlos en la sección Solicitud de método de API Gateway, pero al menos puede desvincular la plantilla de asignación de los parámetros específicos que desea usar. De esta forma, no tendrá que cambiar el código de la plantilla de asignación cada vez que cambie los encabezados, la consulta o los parámetros de la ruta.

Escribí una publicación de blog que brinda más detalles y alguna explicación de la plantilla de mapeo: http://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event -desde-api-gateway/

Aquí está la plantilla de mapeo que puede usar:


  "method": "$context.httpMethod",
  "body" : $input.json('$'),
  "headers": 
    #foreach($param in $input.params().header.keySet())
    "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end

    #end
  ,
  "queryParams": 
    #foreach($param in $input.params().querystring.keySet())
    "$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end

    #end
  ,
  "pathParams": 
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end

    #end
    

Necesita crear un mapeo de entrada dentro Integration Request panel en la pantalla del tablero que describe su método API.

El siguiente código se traduce name parámetro de entrada de consulta en Lambda Event input object:


   "name": "$input.params('name')"

Captura de pantalla:

Captura de pantalla del panel de API

Puede encontrar más información sobre esto en el hilo de entrada original de API Gateway to Lambda en los foros de AWS.

Sección de Reseñas y Valoraciones

Nos puedes añadir valor a nuestra información tributando tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *