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:
- Abra o console do API Gateway.
- Escolha APIs e, em seguida, escolha sua API REST.
- Em Recursos, escolha GET e, em seguida, escolha Solicitação de integração.
- Em Tipo de integração, escolha Função do Lambda.
- Expanda os parâmetros dos cabeçalhos da solicitação de URL e escolha Adicionar parâmetro do cabeçalho da solicitação.
- Em Nome, insira X-Amz-Invocation-Type.
- Em Mapeado de, insira Evento.
- 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:
- Abra o console do API Gateway.
- Escolha APIs e, em seguida, escolha sua API REST.
- Em Recursos, escolha GET e, em seguida, Solicitação de método.
- No Validador de solicitações, escolha o ícone Editar.
- Escolha a lista suspensa e, em seguida, Validar parâmetros e cabeçalhos da cadeia de caracteres de consulta.
- Escolha o ícone Salvar.
- Expanda os cabeçalhos da solicitação HTTP e escolha Adicionar cabeçalho.
- Em Nome, insira InvocationType e escolha Obrigatório.
- 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.
- Em Nome, insira X-Amz-Invocation-Type.
- Em Mapeado de, insira method.request.header.InvocationType.
- 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.