Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configura l'integrazione di un proxy Lambda con lo streaming della risposta del payload in API Gateway
Puoi trasmettere in streaming la risposta di una funzione Lambda per migliorare le prestazioni del time-to-first byte (TTFB) e inviare risposte parziali al client non appena diventano disponibili. API Gateway richiede l'utilizzo dell'API InvokeWithResponseStreamLambda per richiamare la funzione Lambda. API Gateway passa un oggetto evento alla funzione Lambda. La funzione Lambda back-end analizza i dati delle richieste in entrata per stabilire la risposta da restituire. Affinché API Gateway possa trasmettere l'output Lambda, la funzione Lambda deve restituire il formato richiesto da API Gateway.
Differenze nelle integrazioni del proxy Lambda tra la modalità di trasferimento di risposta in streaming e bufferizzata
L'elenco seguente descrive le differenze tra un'integrazione con proxy Lambda e un'integrazione con proxy Lambda per lo streaming di risposte:
-
API Gateway utilizza l'InvokeWithResponseStreamAPI per richiamare l'integrazione del proxy Lambda per lo streaming delle risposte. Ciò si traduce in un URI diverso, che è il seguente:
arn:aws:apigateway:us-west-1:lambda:path/2021-11-15/functions/arn:aws:lambda:us-west-1:111122223333:function:my-function-name/response-streaming-invocationsQuesto ARN utilizza una data diversa per la versione dell'API e un'azione di servizio diversa rispetto all'integrazione del proxy Lambda.
Se utilizzi la console API Gateway per lo streaming delle risposte, la console utilizza l'URI corretto per te.
-
In un'integrazione con proxy Lambda, API Gateway invia la risposta al client solo dopo aver ricevuto la risposta completa da Lambda. In un'integrazione proxy Lambda per lo streaming di risposte, API Gateway avvia il flusso di payload dopo aver ricevuto i metadati e il delimitatore validi da Lambda.
-
L'integrazione del proxy Lambda per lo streaming di risposte utilizza lo stesso formato di input dell'integrazione proxy, ma richiede un formato di output diverso.
Formato di integrazione proxy Lambda per lo streaming delle risposte
Quando API Gateway richiama una funzione Lambda con streaming di risposte, il formato di input è lo stesso di quello di una funzione Lambda per l'integrazione del proxy. Per ulteriori informazioni, consulta Formato di input di una funzione Lambda per l'integrazione proxy.
Quando Lambda invia una risposta a API Gateway, la risposta deve rispettare il seguente formato. Questo formato utilizza un delimitatore per separare i metadati JSON dal payload non elaborato. In questo caso, i dati del payload vengono trasmessi in streaming man mano che vengono trasmessi dalla funzione di streaming Lambda:
{ "headers": {"headerName": "headerValue", ...}, "multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... }, "cookies" : ["cookie1", "cookie2"], "statusCode":httpStatusCode}<DELIMITER>PAYLOAD1 | PAYLOAD2 | PAYLOAD3
Nell'output:
-
Le
statusCodechiaviheaders,multiValueHeaderscookies, e possono non essere specificate se non devono essere restituite intestazioni di risposta aggiuntive. -
La chiave
headerspuò contenere solo una decina di intestazioni di valore. -
L'output prevede che le intestazioni contengano o.
Transfer-Encoding: chunkedContent-length:Se la funzione non restituisce nessuna di queste intestazioni, API Gateway viene aggiuntanumberTransfer-Encoding: chunkedall'intestazione della risposta. -
La chiave
multiValueHeaderspuò contenere intestazioni multi-valore e il valore di una decina di intestazioni. È possibile utilizzare la chiavemultiValueHeadersper specificare tutte le intestazioni aggiuntive, incluse quelle con valore singolo. -
Se si specificano valori sia per
headersche permultiValueHeaders, API Gateway li unisce in un unico elenco. Se la stessa coppia chiave-valore viene specificata in entrambi, solo i valori dimultiValueHeadersverranno visualizzati nell'elenco risultante. -
I metadati devono essere in formato JSON valido. Solo
headersmultiValueHeaders,cookiese lestatusCodechiavi sono supportate. -
È necessario fornire un delimitatore dopo i metadati JSON. Il delimitatore deve essere composto da 8 byte nulli e deve apparire all'interno dei primi 16 KB di dati di flusso.
-
API Gateway non richiede un formato specifico per il payload di risposta del metodo.
Se utilizzi l'URL di una funzione per lo streaming della tua funzione Lambda, devi modificare l'input e l'output della funzione Lambda per soddisfare questi requisiti.
Se l'output della funzione Lambda non soddisfa i requisiti di questo formato, API Gateway potrebbe comunque richiamare la funzione Lambda. La tabella seguente mostra le combinazioni delle impostazioni della richiesta di integrazione API e del codice della funzione Lambda supportato da API Gateway. Ciò include le combinazioni supportate per la modalità di trasferimento della risposta in modalità buffered.
| Modalità di trasferimento della risposta | Il codice funzionale è conforme al formato richiesto | API di richiamo Lambda | Supportato da API Gateway |
|---|---|---|---|
|
Stream |
Sì |
Sì. API Gateway trasmette la tua risposta. |
|
|
Stream |
No |
No API Gateway richiama la funzione Lambda e restituisce una risposta di errore 500. |
|
|
Stream |
Sì |
No API Gateway non supporta questa configurazione di integrazione. |
|
|
Stream |
No |
No API Gateway non supporta questa configurazione di integrazione. |
|
|
Bufferato |
Sì |
No API Gateway non supporta questa configurazione di integrazione. |
|
|
Bufferato |
No |
No API Gateway non supporta questa configurazione di integrazione. |
|
|
Bufferato |
Sì |
API Gateway restituisce le intestazioni HTTP e il codice di stato ma non il corpo della risposta. |
|
|
Bufferato |
No |
Sì. Si tratta di un'integrazione proxy Lambda. Per ulteriori informazioni, consulta Integrazione del proxy Lambda. |