Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
À titre d’exemple pour présenter l’utilisation d’une API REST dans API Gateway comme proxy Amazon S3, cette section explique comment créer et configurer une API REST pour exposer les opérations Amazon S3 suivantes :
-
Exposition de la méthode GET sur la ressource racine de l’API pour afficher la liste de tous les compartiments Amazon S3 d’un appelant.
-
Exposition de la méthode GET sur une ressource Folder pour afficher la liste de tous les objets d’un compartiment Amazon S3.
-
Exposition de la méthode GET sur une ressource Folder/Item pour afficher ou télécharger un objet à partir d’un compartiment Amazon S3.
Vous pouvez importer l’exemple d’API en tant que proxy Amazon S3, comme illustré dans Définitions OpenAPI de l’exemple d’API en tant que proxy Amazon S3. Cet échantillon contient des méthodes plus exposées. Pour plus d’informations sur l’importation d’une API à l’aide de la définition OpenAPI, consultez Développez REST APIs à l'aide d'OpenAPI dans API Gateway.
Note
Pour intégrer votre API Amazon API Gateway avec Amazon S3, vous devez choisir une région où les services API Gateway et Amazon S3 sont disponibles. Pour connaître la disponibilité dans les régions, consultez les points de terminaison et quotas Amazon API Gateway.
Rubriques
Configuration d’autorisations IAM pour l’API afin d’appeler des actions Amazon S3
Création de ressources d’API pour représenter des ressources Amazon S3
Exposition d’une méthode d’API pour afficher la liste des compartiments Amazon S3 de l’appelant
Exposition de méthodes d’API pour accéder à un compartiment Amazon S3
Exposition de méthodes d’API pour accéder à un objet Amazon S3 dans un compartiment
Définitions OpenAPI de l’exemple d’API en tant que proxy Amazon S3
Configuration d’autorisations IAM pour l’API afin d’appeler des actions Amazon S3
Pour autoriser l’API à invoquer les actions Amazon S3 requises, vous devez avoir attaché les politiques IAM appropriées à un rôle IAM. Au cours de cette étape, vous allez créer un nouveau rôle IAM.
Pour créer le rôle d'exécution du proxy de AWS service
Connectez-vous à la console IAM AWS Management Console et ouvrez-la à https://console.aws.amazon.com/iam/
l'adresse. -
Sélectionnez Roles.
-
Sélectionnez Créer un rôle.
-
Choisissez le AWS service sous Sélectionner le type d'entité de confiance, puis sélectionnez API Gateway et sélectionnez Allows API Gateway to push CloudWatch logs vers Logs.
-
Choisissez Suivant, puis Suivant.
-
Pour Nom du rôle, saisissez
APIGatewayS3ProxyPolicy
, puis choisissez Créer un rôle. -
Dans la liste Roles, choisissez le rôle que vous venez de créer. Vous devrez peut-être faire défiler la page ou utiliser la barre de recherche pour rechercher le rôle.
-
Pour le rôle sélectionné, sélectionnez l’onglet Ajouter des autorisations.
-
Choisissez Attacher des politiques dans la liste déroulante.
-
Dans la barre de recherche, saisissez
AmazonS3FullAccess
et choisissez Ajouter des autorisations.Note
Ce didacticiel utilise une politique gérée pour plus de simplicité. Il est recommandé de créer votre propre politique IAM afin d’accorder les autorisations minimales requises.
-
Notez l’ARN du rôle nouvellement créé. Vous l’utiliserez ultérieurement.
Création de ressources d’API pour représenter des ressources Amazon S3
Vous allez utiliser la ressource racine de l’API (/
) comme conteneur des compartiments Amazon S3 d’un appelant authentifié. Vous allez également créer les ressources Folder
et Item
pour représenter respectivement un compartiment Amazon S3 spécifique et un objet Amazon S3 spécifique. Le nom du dossier et la clé de l’objet seront spécifiés sous la forme de paramètres de chemin dans le cadre d’une URL de demande, par l’appelant.
Note
Lorsque vous accédez à des objets dont la clé d’objet inclut /
ou n’importe quel autre caractère spécial, ce caractère doit être encodé en URL. Par exemple, test/test.txt
doit être codé en test%2Ftest.txt
.
Pour créer une ressource d’API qui expose les fonctions de service Amazon S3
-
Dans le même temps Région AWS que vous avez créé votre compartiment Amazon S3, créez une API nommée MyS3. La ressource racine de cette API (/) représente le service Amazon S3. Dans cette étape, vous créez deux ressources supplémentaires /{folder} et /{item}.
-
Choisissez Créer une ressource.
Maintenez Ressource proxy désactivée.
Pour Chemin de ressource, sélectionnez
/
.Sous Resource Name (Nom de la ressource), entrez
{folder}
.Gardez CORS (Partage des ressources entre origines multiples) non coché.
Choisissez Créer une ressource.
Sélectionnez la ressource /{folder}, puis choisissez Créer une ressource.
Suivez les étapes précédentes pour créer une ressource enfant de /{folder} nommée
{item}
.Votre API finale doit ressembler à ce qui suit :
Exposition d’une méthode d’API pour afficher la liste des compartiments Amazon S3 de l’appelant
L’obtention de la liste des compartiments Amazon S3 de l’appelant implique l’appel de l’action GET Service sur Amazon S3. Sur la ressource racine de l’API (/), créez la méthode GET. Configurez la méthode GET de façon à ce qu’elle s’intègre avec Amazon S3, comme suit.
Pour créer et initialiser la méthode GET /
de l’API
-
Sélectionnez la ressource /, puis choisissez Créer une méthode.
Pour le type de méthode, sélectionnez GET.
Pour Type d’intégration, sélectionnez Service AWS.
Pour Région AWS, sélectionnez l' Région AWS endroit où vous avez créé votre compartiment Amazon S3.
Pour Service AWS, sélectionnez Amazon Simple Storage Service.
Laissez Sous-domaine AWS vide.
Pour Méthode HTTP, sélectionnez GET.
Pour Type d’action, sélectionnez Utiliser un remplacement de chemin.
Avec le remplacement du chemin, API Gateway transfère la demande client à Amazon S3 en tant que demande de type chemin d’API REST Amazon S3, dans laquelle une ressource Amazon S3 est exprimée par le chemin de ressource du modèle
s3-host-name/bucket/key
. API Gateway définit les3-host-name
et transmet les valeurs spécifiées par le clientbucket
etkey
du client vers Amazon S3.Pour Remplacement de chemin, saisissez /.
Pour Rôle d’exécution, saisissez l’ARN de rôle pour
APIGatewayS3ProxyPolicy
.Choisissez Paramètres de requête de méthode.
Vous allez utiliser les paramètres de requête de méthode pour contrôler qui peut appeler cette méthode de votre API.
-
Pour Autorisation, dans le menu déroulant, sélectionnez
AWS_IAM
. Choisissez Créer une méthode.
Cette configuration intègre la demande GET
https://
front-end avec la méthode your-api-host
/stage
/GET https://
back-end.your-s3-host
/
Pour que votre API renvoie correctement à l’appelant les réponses positives et les exceptions, vous allez déclarer les réponses 200, 400 et 500 dans Réponse de méthode. Vous allez utiliser le mappage par défaut pour les réponses 200 afin que les réponses back-end du code de statut non déclarées ici soient renvoyées à l’appelant en tant que réponses 200.
Pour déclarer les types de réponse pour la méthode GET /
-
Dans l’onglet Méthode de réponse, sous Réponse 200, choisissez Modifier.
-
Choisissez Ajouter un en-tête, puis procédez comme suit :
Pour Nom de l’en-tête, saisissez
Content-Type
.Sélectionnez Add header.
Répétez ces étapes pour créer un en-tête
Timestamp
et un en-têteContent-Length
. Choisissez Save (Enregistrer).
Dans l’onglet Réponse de méthode, sous Réponses de méthode, choisissez Créer une réponse.
Pour Code de statut HTTP, saisissez 400.
Vous ne définissez aucun en-tête pour cette réponse.
Choisissez Save (Enregistrer).
Répétez les étapes suivantes pour créer la réponse 500.
Vous ne définissez aucun en-tête pour cette réponse.
Étant donné que la réponse d’intégration réussie d’Amazon S3 renvoie la liste des compartiments en tant que données utiles XML et que la réponse de méthode par défaut d’API Gateway renvoie des données utiles JSON, vous devez mapper la valeur du paramètre d’en-tête Content-Type du back-end à celle du front-end. Sinon, le client recevra application/json
pour le type de contenu quand le corps de la réponse est en fait une chaîne XML. La procédure suivante montre comment effectuer cette configuration. En outre, vous souhaitez également afficher au client d’autres paramètres d’en-tête, comme Date et Content-Length.
Pour configurer des mappages d’en-tête de réponse pour la méthode GET /
-
Dans l’onglet Réponse d’intégration, sous Par défaut - Réponse, choisissez Modifier.
Pour l’en-tête Content-Length, saisissez
integration.response.header.Content-Length
pour la valeur de mappage.Pour l’en-tête Content-Type, saisissez
integration.response.header.Content-Type
pour la valeur de mappage.Pour l’en-tête Timestamp, saisissez
integration.response.header.Date
pour la valeur de mappage.Choisissez Save (Enregistrer). Le résultat devrait ressembler à ce qui suit :
-
Dans l’onglet Réponse d’intégration, sous Réponses d’intégration, choisissez Créer une réponse.
Pour HTTP status regex (Regex statut HTTP), saisissez
4\d{2}
. Cela mappe tous les codes de statut de réponse HTTP 4xx à la réponse de la méthode.Pour Code de statut de la réponse de méthode, sélectionnez
400
.Sélectionnez Create (Créer).
Répétez les étapes suivantes afin de créer une réponse d’intégration pour la réponse de la méthode 500. Pour HTTP status regex (Regex statut HTTP), saisissez
5\d{2}
.
À titre de bonne pratique, vous pouvez tester l’API que vous avez configurée jusqu’à présent.
Pour tester la méthode GET /
-
Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l’onglet.
-
Sélectionnez Tester). Le résultat doit ressembler à l’image suivante :
Exposition de méthodes d’API pour accéder à un compartiment Amazon S3
Pour utiliser un compartiment Amazon S3, vous allez exposer la méthode GET
sur la ressource /{folder} afin de répertorier les objets dans un compartiment. Les instructions sont similaires à celles décrites dans Exposition d’une méthode d’API pour afficher la liste des compartiments Amazon S3 de l’appelant. Pour d’autres méthodes, vous pouvez importer l’exemple d’API ici, Définitions OpenAPI de l’exemple d’API en tant que proxy Amazon S3.
Pour exposer la méthode GET sur une ressource de dossier
Sélectionnez la ressource /{folder}, puis choisissez Créer une méthode.
Pour le type de méthode, sélectionnez GET.
Pour Type d’intégration, sélectionnez Service AWS.
Pour Région AWS, sélectionnez l' Région AWS endroit où vous avez créé votre compartiment Amazon S3.
Pour Service AWS, sélectionnez Amazon Simple Storage Service.
Laissez Sous-domaine AWS vide.
Pour Méthode HTTP, sélectionnez GET.
Pour Type d’action, sélectionnez Utiliser un remplacement de chemin.
Pour Remplacement de chemin, saisissez
{bucket}
.Pour Rôle d’exécution, saisissez l’ARN de rôle pour
APIGatewayS3ProxyPolicy
.Choisissez Créer une méthode.
Vous définissez le paramètre de chemin {folder}
dans l’URL de point de terminaison Amazon S3. Vous devez mapper le paramètre de chemin {folder}
de la requête de méthode au paramètre de chemin {bucket}
de la requête d’intégration.
Pour mapper {folder}
à {bucket}
-
Dans l’onglet Requête d’intégration, sous Paramètres de requête d’intégration, choisissez Modifier.
Choisissez Paramètres de chemin d’URL, puis choisissez Ajouter un paramètre de chemin.
Pour Nom, saisissez
bucket
.-
Pour Mappage à partir de, entrez
method.request.path.folder
. Choisissez Save (Enregistrer).
Maintenant, vous testez votre API.
Pour tester la méthode /{folder} GET
.
-
Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l’onglet.
-
Sous Chemin, pour le dossier, saisissez le nom de votre compartiment.
-
Sélectionnez Tester).
Le résultat du test contient une liste des objets contenus dans votre compartiment.
Exposition de méthodes d’API pour accéder à un objet Amazon S3 dans un compartiment
Amazon S3 prend en charge les actions GET, DELETE, HEAD, OPTIONS, POST et PUT pour accéder aux objets d’un compartiment donné et les gérer. Dans ce didacticiel, vous allez exposer une méthode GET
sur la ressource {folder}/{item}
pour obtenir une image à partir d’un compartiment. Pour d’autres applications de la ressource {folder}/{item}
, consultez l’exemple d’API,Définitions OpenAPI de l’exemple d’API en tant que proxy Amazon S3.
Pour exposer la méthode GET sur une ressource d’élément
-
Sélectionnez la ressource /{item}, puis choisissez Créer une méthode.
-
Pour le type de méthode, sélectionnez GET.
-
Pour Type d’intégration, sélectionnez Service AWS.
-
Pour Région AWS, sélectionnez l' Région AWS endroit où vous avez créé votre compartiment Amazon S3.
-
Pour Service AWS, sélectionnez Amazon Simple Storage Service.
-
Laissez Sous-domaine AWS vide.
-
Pour Méthode HTTP, sélectionnez GET.
-
Pour Type d’action, sélectionnez Utiliser un remplacement de chemin.
-
Pour Remplacement de chemin, saisissez {bucket}/{object}.
-
Pour Rôle d’exécution, saisissez l’ARN de rôle pour
APIGatewayS3ProxyPolicy
. -
Choisissez Créer une méthode.
Vous définissez les paramètres de chemin {folder}
et {item}
dans l’URL de point de terminaison Amazon S3. Vous devez mapper le paramètre de chemin de la requête de méthode au paramètre de chemin de la requête d’intégration.
Dans cette étape, vous effectuez les opérations suivantes :
-
Mappez le paramètre de chemin
{folder}
de la demande de méthode au paramètre de chemin{bucket}
de la demande d’intégration. Mappez le paramètre de chemin
{item}
de la demande de méthode au paramètre de chemin{object}
de la demande d’intégration.
Pour mapper {folder}
à {bucket}
et {item}
à {object}
-
Dans l’onglet Requête d’intégration, sous Paramètres de requête d’intégration, choisissez Modifier.
-
Choisissez paramètres de chemin d’URL.
-
Choisissez Ajouter un paramètre de chemin.
-
Pour Nom, saisissez
bucket
. -
Pour Mappage à partir de, entrez
method.request.path.folder
. -
Choisissez Ajouter un paramètre de chemin.
-
Pour Nom, saisissez
object
. -
Pour Mappage à partir de, entrez
method.request.path.item
. -
Choisissez Save (Enregistrer).
Pour tester la méthode /{folder}/{object} GET
.
-
Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l’onglet.
-
Sous Chemin, pour le dossier, saisissez le nom de votre compartiment.
-
Sous Chemin, pour l’élément, saisissez le nom d’un élément.
-
Sélectionnez Tester).
Le corps de la réponse contiendra le contenu de l’élément.
La requête renvoie correctement le texte brut (« Hello world ») comme contenu du fichier spécifié (test.txt) dans le compartiment Amazon S3 donné (amzn-s3-demo-bucket).
Pour télécharger ou charger des fichiers binaires (dans API Gateway, tout contenu autre que du contenu JSON codé en UTF-8), des paramètres d’API supplémentaires sont requis. La procédure à suivre est expliquée ci-après :
Pour télécharger ou charger des fichiers binaires à partir de S3
-
Enregistrez les types de média du fichier concerné dans les API binaryMediaTypes. Vous pouvez réaliser cette opération dans la console :
-
Choisissez Paramètres de l’API pour l’API.
-
Sous Types de supports binaires, choisissez Gérer les types de supports.
-
Choisissez Ajouter un type de support binaire, puis saisissez le type de support requis, par exemple
image/png
. -
Choisissez Save changes (Enregistrer les modifications) pour sauvegarder le paramètre.
-
-
Ajoutez l’en-tête
Content-Type
(pour charger) et/ouAccept
(pour télécharger) à la demande de méthode pour exiger que le client indique le type de support binaire requis et l’associe à la demande d’intégration. -
Définissez Traitement du contenu sur
Passthrough
dans la demande d’intégration (pour charger) et dans une réponse d’intégration (pour télécharger). Assurez-vous qu’aucun modèle de mappage n’est défini pour le type de contenu en question. Pour de plus amples informations, veuillez consulter Transformations de données pour REST APIs dans API Gateway.
La taille de la charge utile ne doit pas dépasser 10 Mo. Voir Quotas API Gateway pour la configuration et l’exécution d’une API REST.
Assurez-vous que les types de contenu appropriés ont été ajoutés dans les métadonnées des fichiers sur Amazon S3. Pour du contenu multimédia lisible en streaming, Content-Disposition:inline
peut également être ajouté aux métadonnées.
Pour plus d’informations sur la prise en charge des fichiers binaires dans API Gateway, consultez Conversions du type de contenu dans API Gateway.