Passer au contenu

Comment puis-je configurer une API REST API Gateway pour gérer des données binaires via une intégration proxy Lambda ?

Lecture de 4 minute(s)
0

Je souhaite utiliser une intégration proxy AWS Lambda pour renvoyer des données binaires via mon API REST Amazon API Gateway.

Résolution

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

Remarque : Les API HTTP API Gateway gèrent automatiquement les données binaires.

Utiliser une intégration proxy Lambda pour renvoyer des données binaires via une API REST API Gateway

Effectuez les opérations suivantes :

  1. Ouvrez la console Lambda.
  2. Créez une nouvelle fonction Lambda.
    Remarque : Pour un exemple de fonction Lambda Python 3, consultez la section Renvoyer un support binaire à partir d'une intégration proxy Lambda dans API Gateway.
  3. Ouvrez la console API Gateway.
  4. Créez une nouvelle API REST.
  5. Pour créer une méthode GET pour la nouvelle API, procédez comme suit :
    Dans le panneau Méthodes, sélectionnez Créer une méthode.
    Pour Type de méthode, sélectionnez GET.
    Dans la section / - GET - Setup, pour Type d'intégration, sélectionnez Fonction Lambda.
    Activez l’option Utiliser l'intégration proxy Lambda.
    Pour Fonction Lambda, choisissez la région AWS dans laquelle vous avez créé votre fonction Lambda. Puis, saisissez le nom de la nouvelle fonction Lambda.
    Sélectionnez Créer une méthode.
  6. Pour API, sélectionnez Paramètres de l’API.
  7. Sous Types de supports binaires, sélectionnez Gérer les types de supports, puis Ajouter un type de support binaire.
  8. Ajoutez votre format de fichier, tel que image/png ou application/pdf.
  9. Sélectionnez Enregistrer les modifications.
  10. Déployez votre API vers une nouvelle étape.

Remarque : Pour les données binaires, vous devez définir la propriété ;isBase64Encoded sur vrai dans la sortie de la fonction Lambda. La propriété corps doit également contenir le support binaire codé en base64. Pour plus d'informations, consultez la section Types de supports binaires pour les API REST dans API Gateway.

Utiliser Postman ou cURL pour invoquer votre API REST afin de renvoyer des données binaires

Important : Pour Postman ou cURL, incluez l'en-tête Accepter dans la requête d'API. La valeur d'en-tête Accepter doit correspondre à votre format de fichier, tel que image/png ou application/pdf.

Exécutez la commande curl suivante :

curl 'https://exampleRestApiId.execute-api.exampleRegion.amazonaws.com/exampleStageName/' -H 'Accept: image/png'

Remarque : Dans la commande précédente, remplacez exampleRestApiId par l'identifiant de votre API et exampleRegion par la région dans laquelle se trouve votre API. Remplacez également exampleStageName par le nom d’étape de votre API et image/png par votre type de fichier image.

Utiliser un navigateur Web pour invoquer votre API REST afin de renvoyer des données binaires

Les navigateurs Web envoient automatiquement un en-tête Accepter contenant plusieurs valeurs. Par défaut, la première valeur est toujours html/text. Dans la mesure où API Gateway n'accepte que la première valeur, vous devez ajouter text/html en tant que type de support binaire à l'API. Sinon, 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 text/html en tant que type de support binaire à une API REST, procédez comme suit :

  1. Ouvrez la console API Gateway.
  2. Sélectionnez votre API.
  3. Dans le volet de navigation, sélectionnez Paramètres de l’API.
  4. Sous Types de supports binaires, sélectionnez Gérer les types de supports, puis Ajouter un type de support binaire.
  5. Saisissez text/html.
  6. Sélectionnez Enregistrer les modifications.
  7. Déployez votre API.

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

Informations connexes

Configurer une étape pour une API REST dans API Gateway

Invoquer des API REST dans API Gateway