Configurar um autorizador do Lambda para o API Gateway - Amazon API Gateway

Configurar um autorizador do Lambda para o API Gateway

Depois de criar uma função do Lambda, configure-a como um autorizador para a API. Em seguida, configure o método para invocar o autorizador do Lambda e determinar se um chamador pode invocar o método. É possível criar uma função do Lambda na mesma conta em que você criou a API ou em uma conta diferente.

Você pode testar o autorizador do Lambda usando as ferramentas integradas no console do API Gateway ou usando o Postman. Consulte instruções sobre como usar o Postman para testar a função do autorizador do Lambda em Chamar uma API com um autorizador do Lambda do API Gateway.

Configurar um autorizador do Lambda (console)

O procedimento a seguir mostra como criar um autorizador do Lambda no console da API REST do API Gateway. Para saber mais sobre os diferentes tipos de autorizador do Lambda, consulte Como escolher um tipo de autorizador do Lambda.

REQUEST authorizer
Como configurar um autorizador REQUEST do Lambda
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Escolha uma API e selecione Autorizadores.

  3. Selecione Criar autorizador.

  4. Em Nome do autorizador, insira um nome para o autorizador.

  5. Em Tipo de autorizador, selecione Lambda.

  6. Em Função do Lambda, selecione a Região da AWS onde você criou a função do Lambda do autorizador e, depois, insira o nome da função.

  7. Mantenha o campo Função Lambda de invocação em branco para permitir que o console da API REST do API Gateway defina uma política baseada em recursos. A política concede permissões ao API Gateway para invocar a função do autorizador do Lambda. Você também pode optar por inserir o nome de um perfil do IAM para permitir que o API Gateway invoque a função do autorizador do Lambda. Consulte um exemplo de função em Criar uma função do IAM que pode ser assumida.

  8. Em Carga de evento do Lambda, escolha Solicitar.

  9. 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.

  10. Para armazenar em cache a política de autorização gerada pelo autorizador, mantenha Armazenamento em cache de autorização ativado. Quando o armazenamento de políticas em cache está habilitado, é possível modificar o valor de TTL. A definição de TTL como zero desabilita o armazenamento em cache de políticas.

    Se você habilitar o armazenamento em cache, o autorizador deverá retornar uma política que seja aplicável a todos os métodos em uma API. Para aplicar uma política específica do método, use as variáveis de contexto $context.path e $context.httpMethod.

  11. Selecione Criar autorizador.

TOKEN authorizer
Como configurar um autorizador TOKEN do Lambda
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Escolha uma API e selecione Autorizadores.

  3. Selecione Criar autorizador.

  4. Em Nome do autorizador, insira um nome para o autorizador.

  5. Em Tipo de autorizador, selecione Lambda.

  6. Em Função do Lambda, selecione a Região da AWS onde você criou a função do Lambda do autorizador e, depois, insira o nome da função.

  7. Mantenha o campo Função Lambda de invocação em branco para permitir que o console da API REST do API Gateway defina uma política baseada em recursos. A política concede permissões ao API Gateway para invocar a função do autorizador do Lambda. Você também pode optar por inserir o nome de um perfil do IAM para permitir que o API Gateway invoque a função do autorizador do Lambda. Consulte um exemplo de função em Criar uma função do IAM que pode ser assumida.

  8. Em Carga de evento do Lambda, escolha Token.

  9. Em Origem do token, insira o nome do cabeçalho que contém o token de autorização. O chamador deve incluir um cabeçalho desse nome para enviar o token de autorização ao autorizador do Lambda.

  10. (Opcional) 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.

  11. 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, o nome de cabeçalho especificado em Origem do token se torna a chave de cache. Quando o armazenamento de políticas em cache está habilitado, é possível modificar o valor de TTL. A definição de TTL como zero desabilita o armazenamento em cache de políticas.

    Se você habilitar o armazenamento em cache, o autorizador deverá retornar uma política que seja aplicável a todos os métodos em uma API. Para aplicar uma política específica do método, desative Armazenamento em cache de autorização.

  12. Selecione Criar autorizador.

Depois de criar o autorizador do Lambda, é possível testá-lo. O procedimento a seguir mostra como testar o autorizador do Lambda.

REQUEST authorizer
Como testar um autorizador REQUEST do Lambda
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Selecione o nome do autorizador.

  3. Em Testar autorizador, insira um valor para a fonte de identidades.

    Se você estiver usando o Exemplo de função do Lambda do autorizador REQUEST, faça o seguinte:

    1. Selecione Cabeçalho e insira headerValue1; depois, escolha Adicionar parâmetro.

    2. Em Tipo de origem de identidade, selecione String de consulta, insira queryValue1 e escolha Adicionar parâmetro.

    3. Em Tipo de origem de identidade, selecione Variável de estágio e insira stageValue1.

    Você não pode modificar as variáveis de contexto para a invocação do teste, mas pode modificar o modelo de evento de teste do Autorizador do API Gateway para a função do Lambda. Em seguida, você pode testar a função de autorizador do Lambda com variáveis de contexto modificadas. Para saber mais, consulte Testing Lambda functions in the console no Guia do desenvolvedor do AWS Lambda.

  4. Escolha Testar autorizador.

TOKEN authorizer
Como testar um autorizador TOKEN do Lambda
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Selecione o nome do autorizador.

  3. Em Testar autorizador, insira um valor para o token.

    Se você estiver usando o Exemplo de função do Lambda do autorizador TOKEN, faça o seguinte:

    1. Em authorizationToken, insira allow.

  4. Escolha Testar autorizador.

    Se o autorizador do Lambda negar com sucesso uma solicitação no ambiente de teste, o teste responderá com uma resposta HTTP 200 OK. No entanto, fora do ambiente de teste, o API Gateway retorna uma resposta HTTP 403 Forbidden e ocorre uma falha na solicitação do método.

Configurar um autorizador do Lambda (AWS CLI)

O comando create-authorizer mostra como criar um autorizador do Lambda usando a AWS CLI.

REQUEST authorizer

O exemplo a seguir cria um autorizador REQUEST e usa o cabeçalho Authorizer e a variável de contexto accountId como fontes de identidade:

aws apigateway create-authorizer \ --rest-api-id 1234123412 \ --name 'First_Request_Custom_Authorizer' \ --type REQUEST \ --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \ --identity-source 'method.request.header.Authorization,context.accountId' \ --authorizer-result-ttl-in-seconds 300
TOKEN authorizer

O exemplo a seguir cria um autorizador TOKEN e usa o cabeçalho Authorization como a fonte de identidade:

aws apigateway create-authorizer \ --rest-api-id 1234123412 \ --name 'First_Token_Custom_Authorizer' \ --type TOKEN \ --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \ --identity-source 'method.request.header.Authorization' \ --authorizer-result-ttl-in-seconds 300

Depois de criar o autorizador do Lambda, é possível testá-lo. O comando test-invoke-authorizer mostra como testar o autorizador do Lambda:

aws apigateway test-invoke-authorizer --rest-api-id 1234123412 \ --authorizer-id efg1234 \ --headers Authorization='Value'

Configurar um método para usar um autorizador do Lambda (console)

Depois de configurar o autorizador do Lambda, anexe-o a um método para a API.

Para configurar um método de API para usar um autorizador do Lambda
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Selecione uma API.

  3. Selecione Recursos e escolha um novo método ou um já existente.

  4. Na guia Solicitação de método, em Configurações de solicitação de método, escolha Editar.

  5. Em Autorizador, no menu suspenso, selecione o autorizador do Lambda que você acabou de criar.

  6. (Opcional) Se você quiser passar o token de autorização para o back-end, escolha Cabeçalhos de solicitação HTTP. Escolha Adicionar cabeçalho e adicione o nome do cabeçalho de autorização. Em Nome, insira um nome de cabeçalho que corresponda ao nome de Origem do token especificado quando você criou o autorizador do Lambda para a API. Esta etapa não se aplica a autorizadores REQUEST.

  7. Escolha Salvar.

  8. Escolha Deploy API (Implantar API) para implantar a API em um estágio. Para um autorizador REQUEST que usa variáveis de estágio, você também deve definir as variáveis de estágio necessárias e especificar os respectivos valores enquanto estiver na página Estágio.

Configurar um método para usar um autorizador do Lambda (AWS CLI)

Depois de configurar o autorizador do Lambda, anexe-o a um método para a API. Você pode criar um método ou usar uma operação de patch para anexar um autorizador a um método existente.

O comando put-method a seguir mostra como criar um método que usa um autorizador do Lambda:

aws apigateway put-method --rest-api-id 1234123412 \ --resource-id a1b2c3 \ --http-method PUT \ --authorization-type CUSTOM \ --authorizer-id efg1234

O comando update-method a seguir mostra como atualizar um método existente para usar um autorizador do Lambda:

aws apigateway update-method \ --rest-api-id 1234123412 \ --resource-id a1b2c3 \ --http-method PUT \ --patch-operations op="replace",path="/authorizationType",value="CUSTOM" op="replace",path="/authorizerId",value="efg1234"