

# Escolher uma origem de chaves de API no API Gateway
<a name="api-gateway-api-key-source"></a>

Quando você associa um plano de uso a uma API e habilita chaves de API em métodos de API, toda solicitação recebida para a API deve conter uma [chave de API](api-gateway-basic-concept.md#apigateway-definition-api-key). O API Gateway lê a chave e a compara com as chaves no plano de uso. Se houver correspondência, o API Gateway fará o controle de utilização das solicitações de acordo com o limite de solicitação e a cota do plano. Caso contrário, ele lançará uma exceção de `InvalidKeyParameter`. Como resultado, o autor da chamada recebe uma resposta `403 Forbidden`.

A API do API Gateway pode receber chaves de API de duas origens:

**`HEADER`**  
Distribua chaves de API aos seus clientes e exija que eles repassem a chave de API como o cabeçalho `X-API-Key` de cada solicitação de entrada. 

**`AUTHORIZER`**  
Um autorizador do Lambda pode retornar a chave de API como parte da resposta de autorização. Para obter mais informações sobre a resposta de autorização, consulte [Saída de um autorizador do Lambda para o API Gateway](api-gateway-lambda-authorizer-output.md).

**nota**  
Para ver as práticas recomendadas a serem consideradas, consulte [Práticas Recomendadas para chaves de API e planos de uso](api-gateway-api-usage-plans.md#apigateway-usage-plans-best-practices).

O procedimento a seguir mostra como escolher uma origem de chave de API.

------
#### [ Console de gerenciamento da AWS ]

**Como escolher uma origem de chave de API para uma API**

1. Inicie uma sessão no console do API Gateway.

1. Escolha uma API existente ou crie uma nova.

1. No painel de navegação principal, selecione **Configurações da API**. 

1. Na seção **Detalhes da API**, escolha **Editar**. 

1.  Em **Origem de chave de API**, selecione `Header` ou `Authorizer` na lista suspensa.

1. Escolha **Salvar alterações**.

------
#### [ AWS CLI ]

O comando [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) indicado abaixo atualiza uma API para definir a origem da chave de API como `AUTHORIZER`:

```
aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/apiKeySource,value=AUTHORIZER
```

Para que o cliente envie uma chave de API, defina o `value` como `HEADER` no comando anterior.

------
#### [ REST API ]

Para escolher uma origem de chave de API para uma API usando a API REST do API Gateway, chame [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateRestApi.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateRestApi.html) da seguinte forma:

```
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 um autorizador retorne uma chave de API, defina `value` para `AUTHORIZER` na entrada `patchOperations` anterior.

------