Comment configurer une API API Gateway pour gérer des données binaires à l'aide d'une intégration de proxy Lambda ?

Lecture de 4 minute(s)
0

Je veux retourner des données binaires via mon API REST Amazon API Gateway (ou API HTTP) à l'aide d'une intégration de proxy AWS Lambda. Comment procéder ?

Solution

Remarque : les API HTTP API Gateway gèrent automatiquement les données binaires. Pour que les API REST API Gateway puissent également les gérer, la fonction Lambda backend doit utiliser le format de sortie d'une fonction Lambda pour l'intégration de proxy.

Retourner des données binaires via une API REST API Gateway à l'aide d'une intégration de proxy Lambda

1.    Accédez à la console Lambda, et créez une nouvelle fonction Lambda.
Remarque : un exemple de fonction Lambda Python 3 est disponible dans la section Retourner un média binaire à partir d'une intégration de proxy Lambda.

2.    Dans la console API Gateway, créez une nouvelle API REST.

3.    Créez une méthode GET pour la nouvelle API en procédant comme suit :
Dans le panneau Ressources, choisissez Actions.
Sélectionnez Créer une méthode. Ensuite, cliquez sur GET.
Dans la section / - GET - Configuration, pour Type d'intégration, choisissez Fonction Lambda. Cochez la case Utiliser une intégration proxy Lambda .
Pour Région Lambda, choisissez la région dans laquelle vous avez créé votre fonction Lambda.
Pour Fonction Lambda, saisissez le nom de la fonction Lambda créée à l'étape 1.
Sélectionnez Enregistrer.
Dans la boîte de dialogue Ajouter une autorisation à une fonction Lambda, cliquez sur OK.

4.    Dans le volet de navigation de gauche, dans la fenêtre API, choisissez Paramètres.

5.    Sous Types de médias binaires, choisissez Ajouter un type de média binaire et ajoutez image/png ou un autre format de fichier que vous souhaitez utiliser, tel que application/pdf.

6.    Sélectionnez Enregistrer les modifications.

7.    Déployez votre API vers une nouvelle étape. Pour plus d'informations, consultez la section Configuration d'une étape à l'aide de la console API Gateway.

Votre API est maintenant prête à retourner des données binaires via API Gateway en utilisant une intégration de proxy Lambda. Pour savoir comment appeler votre API, consultez Appel d'une API REST dans Amazon API Gateway.

Remarque : lorsque vous traitez des données binaires, la propriété isBase64Encoded dans la sortie de la fonction Lambda doit être définie sur true. La propriété body doit également contenir le média binaire encodé au format base64. Pour plus d'informations, consultez Utilisation des types de médias binaires pour les API REST.

Appeler votre API REST pour retourner des données binaires en utilisant Postman et cURL

Important : si vous utilisez Postman ou cURL pour appeler votre API REST afin de retourner des données binaires, assurez-vous d'inclure l'en-tête Accept dans la demande d'API. La valeur d'en-tête Accept doit correspondre au format de fichier que vous utilisez. Par exemple, image/png ou application/pdf.

Consultez la section Utilisation de Postman pour appeler une API REST pour plus d'informations à ce sujet.

Pour savoir comment API Gateway encode les charges utiles, reportez-vous à Conversions de type de contenu dans API Gateway.

Exemple de commande cURL pour appeler une API REST API Gateway afin de retourner des données binaires

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

Remarque : remplacez les variables suivantes avant d'exécuter l'exemple de commande cURL :
Pour {restapi_id}, saisissez l'identifiant de votre API.
Pour {region}, renseignez la région AWS dans laquelle se trouve votre API.
Pour {stage_name}, entrez le nom de l'étape de votre API.
Pour image/png, veillez à indiquer le type de fichier image réel que vous utilisez.

Appeler votre API REST pour retourner des données binaires à l'aide d'un navigateur Web

Si vous utilisez un navigateur Web pour appeler une API REST afin de retourner des données binaires, pensez à ajouter text/html en tant que type de média binaire à l'API.

Remarque : les navigateurs Web envoient automatiquement un en-tête Accept avec plusieurs valeurs. Par défaut, la première valeur est toujours html/text. Puisque API Gateway honore seulement la première valeur, vous devez ajouter texte/html en tant que type de média binaire à l'API. À défaut, le message d'erreur suivant s'affiche :

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

Pour ajouter texte/html en tant que type de média binaire à une API REST, procédez comme suit :

1.    Dans la console API Gateway, choisissez votre API.

2.    Dans le volet de navigation de gauche, en bas de la section API, choisissez Paramètres.

3.    Sous Types de médias binaires, choisissez Ajouter un type de média binaire puis texte/html.

4.    Enregistrez les modifications.

5.    Déployez votre API.

Pour plus d'informations, consultez la section Conversions de type de contenu dans API Gateway.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 ans