Como posso invocar uma função do Lambda de forma assíncrona da minha API do Amazon API Gateway?

3 minuto de leitura
0

Quero invocar uma função do AWS Lambda de forma assíncrona em vez de sincronizada para minha API do Amazon API Gateway.

Resolução

APIs REST

Na integração sem proxy do Lambda, a função do Lambda de back-end é invocada de forma síncrona por padrão. Você pode configurar a função do Lambda para que uma integração não proxy do Lambda seja invocada de forma assíncrona especificando 'Event' ('Evento') como o tipo de invocação do Lambda.

1.    Abra o console do API Gateway, escolha APIs e escolha sua API REST.

2.    Em Resources (Recursos), escolha GET e, em seguida, escolha Integration Request (Solicitação de integração).

3.    Em Integration Type (Tipo de integração), escolha Lambda Function (Função do Lambda).

4.    Expanda HTTP Headers (Cabeçalhos HTTP) e escolha Add header (Adicionar cabeçalho).

5.    Para Name (Nome), insira X-Amz-Invocation-Type.

6.    Em Mapped from (Mapeado de), insira 'Event' ( 'Evento').

7.    Redeploy the REST API (Implantar a API REST).

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

1.    Abra o console do API Gateway, escolha APIs e escolha sua API REST.

2.    Em Resources (Recursos), escolha GET e, em seguida, escolha Method Request (Solicitação de método).

3.    No Request Validator (Validador de solicitação), escolha o ícone de edição, a lista suspensa e Validate query string parameters and headers (Validar parâmetros e cabeçalhos da string de consulta).

4.    Escolha o ícone de atualização para salvar as alterações.

5.    Expanda HTTP Headers (Cabeçalhos HTTP) e escolha Add header (Adicionar cabeçalho).

6.    Em Name (Nome), insira InvocationType e escolha Required (Obrigatório).

7.    Em Integration Request (Solicitação de integração), expanda HTTP Headers (Cabeçalhos HTTP) e escolha Add header (Adicionar cabeçalho).

8.    Para Name (Nome), insira X-Amz-Invocation-Type.

9.     Em Mapped from (Mapeado de), insira method.request.header.InvocationType.

10.    Redeploy the REST API (Implantar a API REST).

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

Para obter mais informações, consulte Set up asynchronous invocation of the backend Lambda function (Configurar a invocação assíncrona da função do Lambda de back-end).

APIs HTTP

As APIs HTTP oferecem suporte somente a integrações de proxy para Lambda. Você não pode definir o cabeçalho X-Amz-Invocation-Type na integração do API Gateway para APIs HTTP. Você pode usar duas funções do Lambda com uma atuando como proxy.

Exemplo de configuração:

HTTP API --> Invoke Lambda1 synchronously --> Invoke Lambda2 asynchronously