Elección de un origen de clave de API en API Gateway
Al asociar un plan de uso a una API y habilitar claves de API en los métodos de API, cada solicitud de entrada para la API debe contener una clave de API. API Gateway lee la clave y la compara con las claves del plan de uso. Si hay una coincidencia, API Gateway limita las solicitudes en función del límite de solicitudes y la cuota del plan. De lo contrario, inicia una excepción InvalidKeyParameter
. Como resultado, el intermediario recibe una respuesta 403 Forbidden
.
Su API de API Gateway puede recibir claves de API de una de dos fuentes:
HEADER
-
Distribuye las claves de API a sus clientes y les pide que pasen la clave de API como el encabezado
X-API-Key
de cada solicitud de entrada. AUTHORIZER
-
Hace que un autorizador de Lambda devuelva la clave de API como parte de la respuesta de autorización. Para obtener más información sobre la respuesta de autorización, consulte Salida de un autorizador de Lambda de API Gateway.
nota
Para conocer las prácticas recomendadas a tener en cuenta, consulte Prácticas recomendadas para claves de API y planes de uso.
Para elegir un origen de clave de API para una API a través de la consola de API Gateway
-
Inicie sesión en la consola de API Gateway.
-
Seleccione una API existente o cree una nueva.
-
En el panel de navegación principal, elija Configuración de la API.
-
En la sección Detalles de la API, elija Editar.
-
En Origen de clave de API, seleccione
Header
oAuthorizer
de la lista desplegable. -
Elija Guardar cambios.
Si desea elegir un origen de claves para una API a través de la AWS CLI, llame al comando update-rest-api
, tal y como se indica a continuación:
aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/apiKeySource,value=AUTHORIZER
Para que el cliente envíe una clave de API, establezca value
en HEADER
en el comando de la CLI precedente.
Si desea elegir un origen de clave de API a través de la API de REST de API Gateway, llame a restapi:update
, tal y como se indica a continuación:
PATCH /restapis/fugvjdxtri/ HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160603T205348Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash} { "patchOperations" : [ { "op" : "replace", "path" : "/apiKeySource", "value" : "HEADER" } ] }
Para que el autorizador devuelva una clave de API, establezca value
en AUTHORIZER
en la entrada patchOperations
anterior.
En función del tipo de origen de clave de API que elija, utilice uno de los siguientes procedimientos para usar claves de API proporcionadas por un encabezado o claves de API proporcionadas por un autorizador en la invocación de método:
Para utilizar claves de API proporcionadas por un encabezado:
-
Cree una API con los métodos de la API que desee y, a continuación, implemente la API en una etapa.
-
Cree un nuevo plan de uso o elija uno existente. Añada la etapa de API implementada al plan de uso. Asocie una clave de API al plan de uso o elija una clave de API existente en el plan. Anote el valor de la clave de API elegida.
-
Configure los métodos de la API para que exijan una clave de API.
-
Vuelva a implementar la API en la misma etapa. Si implementa la API en una nueva etapa, asegúrese de actualizar el plan de uso para asociar la nueva etapa de API.
El cliente puede llamar ahora a los métodos de la API proporcionando al encabezado x-api-key
la clave de API elegida como valor de encabezado.
Para utilizar claves de API proporcionadas por un autorizador:
-
Cree una API con los métodos de la API que desee y, a continuación, implemente la API en una etapa.
-
Cree un nuevo plan de uso o elija uno existente. Añada la etapa de API implementada al plan de uso. Asocie una clave de API al plan de uso o elija una clave de API existente en el plan. Anote el valor de la clave de API elegida.
-
Cree un autorizador de Lambda basado en token Incluya
usageIdentifierKey:
como propiedad de nivel de raíz de la respuesta de autorización. Para obtener instrucciones sobre cómo crear un autorizador basado en token, consulte Ejemplo de función de Lambda con un autorizador TOKEN.{api-key}
-
Configure los métodos de la API para que exijan una clave de API y habilite el autorizador de Lambda en los métodos.
-
Vuelva a implementar la API en la misma etapa. Si implementa la API en una nueva etapa, asegúrese de actualizar el plan de uso para asociar la nueva etapa de API.
El cliente puede llamar ahora a los métodos requeridos por la clave de API sin proporcionar explícitamente una clave de API. La clave de API proporcionada por un autorizador se usa de forma automática.