

# Configurar um autorizador do Lambda do API Gateway entre contas
<a name="apigateway-lambda-authorizer-cross-account-lambda-authorizer"></a>

Agora você também pode usar uma função do AWS Lambda de uma conta da AWS diferente como sua função do autorizador da API. Cada conta pode estar em qualquer região onde o Amazon API Gateway está disponível. A função do autorizador do Lambda pode usar estratégias de autenticação de token de portador, como OAuth ou SAML. Isso facilita o gerenciamento centralizado e o compartilhamento da função de autorizador do Lambda central em várias APIs do API Gateway.

Nesta seção, mostramos como configurar uma função de autorização do Lambda entre contas usando o console do Amazon API Gateway.

Estas instruções pressupõem que você já tem uma API do API Gateway em uma conta da AWS e uma função do autorizador do Lambda em outra conta.

## Como configurar um autorizador do Lambda entre contas usando o console do API Gateway
<a name="apigateway-cross-account-lambda-auth-configure-cross-account-authorizer"></a>

Faça login no console do Amazon API Gateway na conta que contém a sua API e faça o seguinte:

1. Escolha sua API e, no painel de navegação principal, selecione **Autorizadores**.

1. Selecione **Criar autorizador**. 

1. Em **Nome do autorizador**, insira um nome para o autorizador.

1. Em **Tipo de autorizador**, selecione **Lambda**.

1. Em **Função do Lambda**, insira o ARN completo da função do autorizador do Lambda na sua segunda conta.
**nota**  
No console do Lambda, você pode encontrar o ARN da sua função no canto superior direito da janela.

1. Um aviso com uma string de comando `aws lambda add-permission` será exibido. A política concede permissão do API Gateway para invocar a função do Lambda do autorizador. Copie o comando e salve-o para mais tarde. Execute o comando depois de criar o autorizador.

1. Em **Carga útil do evento do Lambda**, escolha **Token** para um autorizador `TOKEN` ou **Solicitação** para um autorizador `REQUEST`.

1. Dependendo da opção da etapa anterior, siga um destes procedimentos:

   1.  Para a opção **Token**, faça o seguinte: 
      + Em **Origem do token**, insira o nome do cabeçalho que contém o token de autorização. O cliente da API deve incluir um cabeçalho desse nome para enviar o token de autorização ao autorizador do Lambda. 
      + Opcionalmente, em **Validação do Token**, insira uma instrução RegEx. O API Gateway executa a validação inicial do token de entrada em relação a esta expressão e invoca o autorizador mediante a validação com êxito. Isso ajuda a reduzir as chamadas para a API. 
      + Para armazenar em cache a política de autorização gerada pelo autorizador, mantenha **Armazenamento em cache de autorização** ativado. Quando o armazenamento em cache de políticas está habilitado, você pode optar por modificar o valor **TTL**. A definição de **TTL** como zero desabilita o armazenamento em cache de políticas. Quando o armazenamento em cache de políticas está habilitado, o nome de cabeçalho especificado em **Origem do token** se torna a chave de cache. Se vários valores forem passados para esse cabeçalho na solicitação, todos os valores se tornarão a chave de cache, com a ordem preservada.
**nota**  
O valor de **TTL** padrão é de 300 segundos. O valor máximo é de 3600 segundos. Não é possível aumentar esse limite.

   1. Para a opção de **Request (Solicitação)**, faça o seguinte:
      + Em **Tipo de origem de identidade**, selecione um tipo de parâmetro. Os tipos de parâmetros com suporte são `Header`, `Query string`, `Stage variable` e `Context`. Para adicionar mais origens de identidade, escolha **Adicionar parâmetro**. 
      + Para armazenar em cache a política de autorização gerada pelo autorizador, mantenha **Armazenamento em cache de autorização** ativado. Quando o armazenamento em cache de políticas está habilitado, você pode optar por modificar o valor **TTL**. A definição de **TTL** como zero desabilita o armazenamento em cache de políticas.

        O API Gateway usa as origens de identidade especificadas como a chave de cache do autorizador de solicitação. Quando o armazenamento em cache é ativado, o API Gateway chama a função do Lambda do autorizador somente depois de verificar com sucesso que todas as origens de identidade especificadas estão presentes em tempo de execução. Se uma origem de identidade especificada estiver ausente, for nula ou vazia, o API Gateway retornará uma resposta `401 Unauthorized` sem chamar a função do Lambda do autorizador. 

        Quando várias origens de identidade são definidas, todas são usadas para derivar a chave de cache do autorizador. A alteração de qualquer parte da chave de cache faz com que o autorizador descarte o documento de política armazenado em cache e gere um novo. Se um cabeçalho com vários valores for passado na solicitação, todos os valores farão parte da chave de cache, com a ordem preservada. 
      + Quando o armazenamento em cache está desativado, não é necessário especificar uma origem de identidade.
**nota**  
 Para habilitar o armazenamento em cache, o autorizador deve retornar uma política que seja aplicável a todos os métodos em uma API. Para aplicar uma política de método específico, você pode desativar **Armazenamento em cache de autorização**. 

1. Selecione **Criar autorizador**.

1. Cole a string do comando `aws lambda add-permission` que você copiou de uma etapa anterior em uma janela da AWS CLI configurada para sua segunda conta. Substitua `AUTHORIZER_ID` pelo ID do seu autorizador. Isso concederá acesso para sua primeira conta à função do autorizador do Lambda da sua segunda conta.