Comment puis-je configurer une API 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 ou mon API HTTP Amazon API Gateway.

Résolution

Remarque : Les API HTTP API Gateway gèrent automatiquement les données binaires. 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.

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 plus d'informations sur la configuration d'une nouvelle étape, consultez la section Configurer une étape pour une API REST dans API Gateway.

Pour plus d'informations sur la procédure d’invocation de votre API, consultez la section Invoquer des API REST dans API Gateway.

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 de l'en-tête Accepter doit correspondre au format de fichier que vous utilisez, 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.