Como invoco de forma assíncrona uma função do Lambda a partir da minha API do API Gateway?

3 minuto de leitura
0

Quero invocar de forma assíncrona uma função do AWS Lambda para minha API do Amazon API Gateway. Não quero invocar a função de forma síncrona.

Resolução

APIs REST

Na integração sem proxy do Lambda, o Lambda invoca de forma síncrona a função de backend por padrão. Para invocar a função de backend de forma assíncrona, defina o tipo de invocação do Lambda como Evento.

Conclua as etapas a seguir:

  1. Abra o console do API Gateway.
  2. Escolha APIs e, em seguida, escolha sua API REST.
  3. Em Recursos, escolha GET e, em seguida, escolha Solicitação de integração.
  4. Em Tipo de integração, escolha Função do Lambda.
  5. Expanda os parâmetros dos cabeçalhos da solicitação de URL e escolha Adicionar parâmetro do cabeçalho da solicitação.
  6. Em Nome, insira X-Amz-Invocation-Type.
  7. Em Mapeado de, insira Evento.
  8. Implante novamente a API REST.

Para invocar a função do Lambda com a opção assíncrona ou síncrona, adicione um cabeçalho InvocationType.

Conclua as etapas a seguir:

  1. Abra o console do API Gateway.
  2. Escolha APIs e, em seguida, escolha sua API REST.
  3. Em Recursos, escolha GET e, em seguida, Solicitação de método.
  4. No Validador de solicitações, escolha o ícone Editar.
  5. Escolha a lista suspensa e, em seguida, Validar parâmetros e cabeçalhos da cadeia de caracteres de consulta.
  6. Escolha o ícone Salvar.
  7. Expanda os cabeçalhos da solicitação HTTP e escolha Adicionar cabeçalho.
  8. Em Nome, insira InvocationType e escolha Obrigatório.
  9. Em Solicitação de integração, expanda os parâmetros dos cabeçalhos da solicitação de URL e escolha Adicionar parâmetro do cabeçalho da solicitação.
  10. Em Nome, insira X-Amz-Invocation-Type.
  11. Em Mapeado de, insira method.request.header.InvocationType.
  12. Implante novamente a API REST.

Os clientes podem incluir o cabeçalho InvocationType: Event em solicitações de API para invocações assíncronas ou o cabeçalho InvocationType: RequestResponse para invocações síncronas.

APIs HTTP

As APIs HTTP só oferecem suporte a integrações de proxy para o Lambda. Não é possível definir o cabeçalho X-Amz-Invocation-Type na integração do API Gateway para APIs HTTP. Em vez disso, use duas funções do Lambda com uma que atue como proxy. Para invocar uma função do Lambda a partir de outra, use a API Invoke e defina InvocationType como Event na primeira função do Lambda.

Exemplo de configuração:

A API HTTP invoca o Lambda1 de forma síncrona e, em seguida, o Lambda1 invoca o Lambda2 de forma assíncrona.