es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Hay un equivalente de clave de API REST en la API HTTP Gateway?

Usando la API REST (AWS API Gateway v1), podemos utilizar la cabecera X-API-Key en la solicitud y mantener la clave de API para controlar el acceso a un endpoint dado.

En AWS, si voy a API Gateway y selecciono la API REST (v1), entonces debajo de Recursos veo: Clave de API requerida y debajo de Claves de API puedo encontrar mi clave.

Utilizando serverless, esto puede ser configurado de la siguiente manera:

proveedor:
  apiKeys:
    - mi-clave-de-api

funciones:
  hola:
    controlador: controlador.hola
    eventos:
      - http:
          ruta: /hola
          método: get
          privado: true

Pero si cambiamos a httpApi, obtenemos:

Advertencia de configuración en 'functions.hello.events[0].httpApi': propiedad no reconocida 'private'

Además, en API Gateway, bajo HTTP API (v2), no hay claves de API en ninguna parte.

Cuando reviso la documentación, veo una sección muy grande sobre claves de API en la API REST: https://www.serverless.com/framework/docs/providers/aws/events/apigateway pero en la API Gateway HTTP no hay nada sobre claves de API: https://www.serverless.com/framework/docs/providers/aws/events/http-api

¿Existe un equivalente de clave de API en la API REST (API Gateway v1) en la API HTTP (API Gateway v2)? Básicamente, quiero poder usar X-API-Key con HTTP API como en REST API.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que las claves de API no están directamente disponibles para HTTP API (API Gateway v2) en AWS. Sin embargo, existen opciones alternativas disponibles para la autorización, como el autorizador JWT, el autorizador Lambda y el autorizador IAM.

    No obstante, la funcionalidad de las claves de API aún se puede lograr mediante la creación de una función lambda de autorización personalizada que verifique el encabezado X-API-Key en la solicitud y luego permita o deniegue el acceso al punto final solicitado. Esta función de autorización personalizada se puede adjuntar a la HTTP API como un autorizador utilizando la propiedad auth en la configuración del evento.

    Aquí hay una configuración de ejemplo para una función de autorización personalizada adjunta a un punto final de HTTP API utilizando serverless:

    functions:
      apiAuthorizer:
        handler: handler.apiAuthorizer
      hello:
        handler: handler.hello
        events:
          - httpApi:
              path: /hello
              method: get
              auth:
                authorizer:
                  name: apiAuthorizer
                  resultTtlInSeconds: 300
    

    En la configuración anterior, la función lambda apiAuthorizer se adjunta como un autorizador al punto final /hello con verificación de encabezado X-API-Key. La propiedad resultTtlInSeconds especifica el tiempo durante el cual se debe almacenar en caché el resultado de la autorización.

    En resumen, aunque las claves de API no están directamente disponibles para HTTP API en AWS, se puede utilizar una función lambda de autorización personalizada para lograr la misma funcionalidad.

Comments are closed.