Didacticiel : création d’une API REST avec une intégration AWS - Amazon API Gateway

Didacticiel : création d’une API REST avec une intégration AWS

Les deux rubriques Didacticiel : création d’une API REST avec une intégration de proxy Lambda et Didacticiel : création d’une API REST avec une intégration Lambda sans proxy décrivent comment créer une API Gateway pour exposer la fonction intégrée Lambda. En outre, vous pouvez créer une API API Gateway pour exposer d’autres services AWS, tels qu’Amazon SNS, Amazon S3, Amazon Kinesis et même AWS Lambda. Ceci est rendu possible par l’intégration AWS. L’intégration Lambda ou l’intégration proxy Lambda est un cas particulier, où l’invocation de la fonction Lambda est exposée via l’API Gateway.

Tous les services AWS prennent en charge les API dédiées pour exposer leurs fonctionnalités. Cependant, les protocoles d’application ou les interfaces de programmation sont susceptibles de différer d’un service à un autre. Une API API Gateway avec l’intégration AWS a l’avantage de fournir un protocole d’application cohérent permettant à votre client d’accéder à différents services AWS.

Dans cette procédure, nous avons créé une API pour exposer Amazon SNS. Pour plus d’exemples d’intégration d’une API à d’autres services AWS, consultez Didacticiels et ateliers Amazon API Gateway.

Contrairement à l’intégration de proxy Lambda, il n’y a pas d’intégration de proxy correspondante pour d’autres services AWS. De ce fait, une méthode d’API est intégrée avec une seule action AWS. Pour plus de flexibilité, vous pouvez configurer une intégration de proxy Lambda, similaire à l’intégration de proxy. La fonction Lambda analyse et traite ensuite les demandes d’autres actions AWS.

API Gateway ne fait pas une nouvelle tentative lorsque le délai est dépassé pour le point de terminaison. L’appelant de l’API doit implémenter une logique de nouvelle tentative pour gérer les dépassements de délai du point de terminaison.

Cette procédure repose sur les instructions et les concepts décrits dans Didacticiel : création d’une API REST avec une intégration Lambda sans proxy. Si vous n’avez pas encore effectué cette procédure, nous vous conseillons de le faire en premier.

Prérequis

Avant de commencer cette procédure, exécutez les étapes suivantes :

  1. Suivez les étapes de Configuration d’API Gateway avant son utilisation.

  2. Créez une nouvelle API nommée MyDemoAPI. Pour plus d’informations, consultez Didacticiel : création d’une API REST avec une intégration HTTP sans proxy.

  3. Déployez l’API au moins une fois dans une étape nommée test. Pour plus d’informations, consultez Déployer l’API dans Choix d’un didacticiel d’intégration AWS Lambda.

  4. Suivez le reste des étapes dans Choix d’un didacticiel d’intégration AWS Lambda.

  5. Créez au moins une rubrique dans Amazon Simple Notification Service (Amazon SNS). Vous utiliserez l’API déployée pour obtenir la liste des rubriques d’Amazon SNS associées à votre compte AWS. Pour apprendre à créer une rubrique dans Amazon SNS, consultez Création d’une rubrique. (Vous n’avez pas besoin de copier l’ARN de la rubrique mentionné à l’étape 5.)

Étape 1 : créer le rôle d’exécution du proxy de service AWS

Pour autoriser l’API à invoquer les actions Amazon SNS requises, vous devez avoir attaché les politiques IAM appropriées à un rôle IAM.

Pour créer le rôle d’exécution du proxy de service AWS
  1. Connectez-vous à l’outil AWS Management Console, puis ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  2. Sélectionnez Roles (Rôles).

  3. Sélectionnez Créer un rôle.

  4. Choisissez Service AWS sous Sélectionner le type d’entité de confiance, puis choisissez API Gateway et sélectionnez Autoriser API Gateway à transmettre des journaux à CloudWatch Logs.

  5. Choisissez Suivant, puis Suivant.

  6. Pour Nom du rôle, saisissez APIGatewaySNSProxyPolicy, puis choisissez Créer un rôle.

  7. 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.

  8. Pour le rôle sélectionné, sélectionnez l’onglet Ajouter des autorisations.

  9. Choisissez Attacher des politiques dans la liste déroulante.

  10. Dans la barre de recherche, saisissez AmazonSNSReadOnlyAccess 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.

  11. Notez l’ARN du rôle nouvellement créé. Vous l’utiliserez ultérieurement.

Étape 2 : créer la ressource

Dans cette étape, vous allez créer une ressource qui permet au proxy de service AWS d’interagir avec le service AWS.

Pour créer la ressource
  1. Connectez-vous à la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez votre API.

  3. Sélectionnez la racine de la ressource, /, représentée par une seule barre oblique (/), puis choisissez Créer une ressource.

  4. Maintenez Ressource proxy désactivée.

  5. Conservez Chemin de ressource sous la forme /.

  6. Pour Nom de la ressource, entrez mydemoawsproxy.

  7. Maintenez CORS (Partage des ressources entre origines multiples) désactivé.

  8. Choisissez Créer une ressource.

Étape 3 : créer la méthode GET

Dans cette étape, vous allez créer une méthode GET qui permet au proxy de service AWS d’interagir avec le service AWS.

Pour créer la méthode GET
  1. Sélectionnez la ressource /mydemoawsproxy, puis choisissez Créer une méthode.

  2. Pour le type de méthode, sélectionnez GET.

  3. Pour Type d’intégration, sélectionnez Service AWS.

  4. Pour Région AWS, sélectionnez la Région AWS où vous avez créé votre rubrique Amazon SNS.

  5. Pour Service AWS, sélectionnez Amazon SNS.

  6. Laissez Sous-domaine AWS vide.

  7. Pour Méthode HTTP, sélectionnez GET.

  8. Pour Type d’action, sélectionnez Utiliser un nom d’action.

  9. Pour Nom de l’action, saisissez ListTopics.

  10. Pour Rôle d’exécution, saisissez l’ARN de rôle pour APIGatewaySNSProxyPolicy.

  11. Choisissez Créer une méthode.

Étape 4 : spécifier les paramètres et tester la méthode

Vous pouvez maintenant tester votre méthode GET pour vérifier qu’elle a été correctement configurée pour répertorier vos rubriques Amazon SNS.

Pour tester la méthode GET
  1. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l’onglet.

  2. Sélectionnez Tester.

    Le résultat affiche une réponse semblable à ce qui suit :

    { "ListTopicsResponse": { "ListTopicsResult": { "NextToken": null, "Topics": [ { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1" }, { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2" }, ... { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N" } ] }, "ResponseMetadata": { "RequestId": "abc1de23-45fa-6789-b0c1-d2e345fa6b78" } } }

Étape 5 : déployer l’API

Dans cette étape, vous allez déployer l’API afin de pouvoir l’appeler en dehors de la console API Gateway.

Pour déployer l’API
  1. Sélectionnez Deploy API (Déployer une API).

  2. Pour Étape, sélectionnez Nouvelle étape.

  3. Sous Nom de l’étape, entrez test.

  4. (Facultatif) Sous Description, entrez une description.

  5. Choisissez Déployer.

Étape 6 : tester l’API

Dans cette étape, vous sortez de la console API Gateway et utilisez votre proxy de service AWS pour interagir avec le service Amazon SNS.

  1. Dans le volet de navigation principal, choisissez Étape.

  2. Sous Détails de l’étape, choisissez l’icône de copie pour copier l’URL d’invocation de votre API.

    Elle doit ressembler à ce qui suit :

    https://my-api-id.execute-api.region-id.amazonaws.com/test
  3. Collez l’URL dans la zone d’adresse d’un nouvel onglet du navigateur.

  4. Ajoutez /mydemoawsproxy afin que l’URL ressemble à ce qui suit :

    https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoawsproxy

    Accédez à l’URL. Des informations similaires à celles qui suivent doivent s’afficher :

    {"ListTopicsResponse":{"ListTopicsResult":{"NextToken": null,"Topics":[{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"},{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"},...{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N}]},"ResponseMetadata":{"RequestId":"abc1de23-45fa-6789-b0c1-d2e345fa6b78}}}

Étape 7 : nettoyer

Vous pouvez supprimer les ressources IAM dont le proxy de service AWS a besoin pour fonctionner.

Avertissement

Si vous supprimez une ressource IAM dont dépend un proxy de service AWS, ce proxy de service AWS et toutes les API qui en dépendent ne fonctionneront plus. La suppression d’une ressource IAM ne peut pas être annulée. Si vous souhaitez réutiliser cette ressource IAM, vous devez la recréer.

Pour supprimer les ressources IAM associées
  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  2. Dans la zone Details, sélectionnez Roles.

  3. Sélectionnez ApigateWayawsProxyExecRole, puis choisissez Role Actions (Actions de rôle), Delete Role (Supprimer le rôle). À l’invite, sélectionnez Yes, Delete.

  4. Dans la zone Details, sélectionnez Policies.

  5. Sélectionnez ApigateWayawsProxyExecPolicy, puis choisissez Policy Actions (Actions de stratégie), Delete (Supprimer). À l’invite, sélectionnez Delete (Supprimer).

Vous avez terminé cette procédure. Pour des informations plus détaillées sur la création d’API en tant que proxy de service AWS, consultez Didacticiel : création d’une API REST en tant que proxy Amazon S3, Didacticiel : création d’une API REST de calculatrice avec deux intégrations de service AWS et une intégration Lambda sans proxy ou Didacticiel : création d’une API REST en tant que proxy Amazon Kinesis.