Come posso configurare un'API di API Gateway per gestire dati binari utilizzando un'integrazione proxy Lambda?

4 minuti di lettura
0

Desidero restituire dati binari tramite una REST API di Gateway Amazon API (o API HTTP) utilizzando un'integrazione proxy AWS Lambda. Quale configurazione devo utilizzare?

Risoluzione

Nota: le API HTTP di API Gateway gestiscono automaticamente i dati binari. Per gestire dati binari con le REST API di API Gateway, è necessario che la funzione Lambda di backend utilizzi il formato di output corretto di una funzione Lambda per l'integrazione proxy.

Restituzione di dati binari tramite una REST API di API Gateway utilizzando un'integrazione proxy Lambda

1.    Nella console Lambda, crea una nuova funzione Lambda.
Nota: per un esempio di funzione Lambda in Python 3, consulta Restituzione di supporti binari da un'integrazione proxy Lambda.

2.    Nella console API Gateway, crea una nuova REST API.

3.    Crea un metodo GET per la nuova API eseguendo le seguenti operazioni:
Nel pannello Risorse, scegli Operazioni.
Scegli Crea metodo. Quindi, scegli GET.
Nella sezione /- GET - Setup, per Tipo di integrazione scegli **Funzione Lambda.**Scegli la casella di controllo Utilizza integrazione proxy Lambda.
In Regione Lambda, scegli la regione in cui hai creato la funzione Lambda.
In Funzione Lambda, inserisci il nome della funzione Lambda creato nel passaggio 1.
Scegli Salva.
Nella finestra di dialogo Aggiungi autorizzazione alla funzione Lambda, scegli OK.

4.    Nel riquadro di navigazione a sinistra, scegli Impostazioni nella sezione API.

5.    In Tipi di media binari, scegli Aggiungi tipo di media binario e aggiungi image/png o un altro formato di file che desideri utilizzare, ad esempio application/pdf.

6.    Scegli Salva modifiche.

7.    Distribuisci l’API in una nuova fase. Per ulteriori informazioni, consulta Configurazione di una fase utilizzando la console API Gateway.

L’API è ora pronta per restituire dati binari tramite API Gateway utilizzando un'integrazione proxy Lambda. Per informazioni su come richiamare l’API, consulta Richiamo di una REST API in Gateway Amazon API.

Nota: quando si utilizzano dati binari, la proprietà isBase64Encoded nell'output della funzione Lambda deve essere impostata su **true.**La proprietà body deve contenere anche il supporto binario codificato base64. Per ulteriori informazioni, consulta Utilizzo di tipi di supporti binari per REST API.

Richiamo della REST API per restituire dati binari utilizzando Postman e cURL

Importante: se usi Postman o cURL per richiamare la REST API per restituire dati binari, assicurati di includere l'intestazione Accetta nella richiesta API. Il valore dell'intestazione Accetta deve corrispondere al formato di file utilizzato. Ad esempio, image/png o application/pdf.

Per informazioni su come richiamare una REST API utilizzando Postman, consulta Use Postman to call a REST API.

Per informazioni su come API Gateway codifica i payload, consulta Conversioni dei tipi di contenuto in API Gateway.

Esempio di comando cURL per richiamare una REST API di API Gateway per restituire dati binari

$ curl 'https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/' -H 'Accept: image/png'

Nota: sostituisci le seguenti variabili prima di eseguire il comando cURL di esempio:
Per {restapi\ _id}, inserisci l'identificatore dell’API.
Per {region}, inserisci la Regione AWS in cui si trova l’API.
Per {stage\ _name}, inserisci il nome della fase dell’API.
Per image/png, assicurati di inserire il tipo di file di immagine effettivo che stai utilizzando.

Richiamo della REST API per restituire dati binari utilizzando un browser Web

Se utilizzi un browser Web per richiamare una REST API per restituire dati binari, assicurati di aggiungere all’API text/html come tipo di supporto binario.

Nota: i browser Web inviano automaticamente un'intestazione Accetta con più valori. Per impostazione predefinita, il primo valore è sempre html/text. Poiché API Gateway considera solo il primo valore, è necessario aggiungere all’API text/html come tipo di supporto binario. Altrimenti, verrà visualizzato il seguente messaggio di errore:

"The image "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" cannot be displayed because it contains errors."

Per aggiungere text/html come tipo di supporto binario a una REST API, procedi come segue:

1.    Nella console API Gateway, scegli la tua API.

2.    Nel riquadro di navigazione a sinistra, scegli Impostazioni nella parte inferiore della sezione API.

3.    In Tipi di media binari, scegli Aggiungi tipo di media binario e aggiungi text/html.

4.    Scegli Salva modifiche.

5.     Distribuisci l’API.

Per ulteriori informazioni, consulta Conversioni dei tipi di contenuto in API Gateway.