Comment puis-je utiliser le point de terminaison d'un VPC d'interface pour accéder à une API REST privée d'API Gateway sur un autre compte ?

Lecture de 9 minute(s)
0

Je souhaite utiliser le point de terminaison d'un cloud privé virtuel (VPC) d'interface pour accéder à une API REST privée d'Amazon API Gateway qui se trouve sur un autre compte AWS.

Brève description

Suivez ces étapes pour utiliser le point de terminaison d'un VPC d'interface afin d'accéder à une API REST privée d'API Gateway qui se trouve dans un autre compte AWS :

  1. Créez un point de terminaison d'interface dans un Amazon Virtual Private Cloud (Amazon VPC) du premier compte (compte A).
  2. Créez une API REST privée d'API Gateway dans le deuxième compte (compte B).
  3. Configurez une stratégie de ressources pour l'API REST privée qui permet au point de terminaison d'interface d'invoquer l'API.
  4. Configurez une méthode pour l'API REST privée.
  5. Déployez l'API REST privée.
  6. Appelez l'API REST privée depuis le compte A pour tester la configuration.

Remarque : l'API REST privée d'Amazon API Gateway et le point de terminaison d'un VPC doivent se trouver dans la même région AWS.

Résolution

Créer un point de terminaison d'interface dans un Amazon VPC du premier compte (compte A)

Créer un nouveau point de terminaison d'un VPC d'interface

À partir du compte A, suivez les instructions de la section Créer un point de terminaison d'un VPC d'interface pour API Gateway execute-api.

Important : dans Stratégie, veillez à sélectionner Accès complet. Il est recommandé d'utiliser une stratégie relative aux points de terminaison d'un VPC afin de restreindre l'accès aux points de terminaison en fonction des ID d'API. Il est également recommandé d'utiliser la stratégie de ressources d'API Gateway afin de restreindre l'accès aux points de terminaison en fonction des principaux. Pour en savoir plus, reportez-vous à Appliquer les autorisations de moindre privilège.

Au moment de créer le point de terminaison d'interface, veuillez prendre les mesures suivantes :

Obtenir l'ID de point de terminaison d'un VPC pour le point de terminaison d'interface

Une fois le point de terminaison d'interface créé, l'ID de point de terminaison d'un VPC s'affiche. Copiez l'ID de point de terminaison d'un VPC lié à votre nouveau point de terminaison d'interface, par exemple : vpce-1a2b3c456d7e89012. Choisissez ensuite Fermer.

Remarque : vous utiliserez cet ID lors de la création et de la configuration de votre API REST privée.

Obtenir un nom DNS public du point de terminaison d'interface

Une fois que vous avez cliqué sur Fermer, la page Points de terminaison s'affiche dans la console Amazon VPC. À partir de l'onglet Détails de la page Points de terminaison, dans la colonne Noms DNS, copiez le nom DNS public de votre point de terminaison d'interface, par exemple : vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com.

Création d'une API REST privée d'API Gateway dans le deuxième compte (compte B)

  1. Dans le compte B, ouvrez la console API Gateway.
  2. Sélectionnez Créer une API.
  3. Dans le champ Choisir un type d'API, sous REST API privée, choisissez Création.
  4. Sur la page Créer, conservez le paramétrage du champ Sélectionner le protocole sur REST.
  5. Dans le champ Créer une nouvelle API, sélectionnez Nouvelle API.
  6. Sous Paramètres, saisissez les informations suivantes :
    Dans le champ Nom d'API, saisissez un nom.
    (Facultatif) Dans le champ Description, saisissez une description.
    Définissez le Type de point de terminaison comme étant Privé.
    Pour le champ ID de point de terminaison d'un VPC, saisissez l'ID de votre point de terminaison d'interface. Choisissez ensuite Ajouter.
    Remarque : lorsque vous associez votre point de terminaison d'interface à votre API REST privée, API Gateway génère un nouvel enregistrement d'alias Amazon Route 53. Vous pouvez utiliser l'alias Route53 pour accéder à votre API privée.
  7.  Choisissez Créer une API.

Pour en savoir plus, reportez-vous à Création d'une API privée dans Amazon API Gateway.

Configurer une politique de ressources pour l'API REST privée permettant au point de terminaison d'interface d'invoquer l'API

1.    Dans le volet de navigation de la console API Gateway, sous votre API, choisissez Stratégie de ressources.

2.    Sur la page Stratégie de ressources, saisissez l'exemple de stratégie de ressources suivant dans la zone de texte :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpce": "vpce-1a2b3c456d7e89012"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*"
    }
  ]
}

Remarque : vous devez remplacer vpce-1a2b3c456d7e89012 par l'ID du point de terminaison d'interface.

Pour en savoir plus, reportez-vous à Configurer une stratégie de ressources pour une API privée.

Configurer une méthode pour l'API REST privée

  1. Dans le volet de navigation de la console API Gateway, sous votre API, choisissez Ressources.
  2. Dans le volet Ressources, sélectionnez Actions, puis sélectionnez Créer une méthode.
  3. Dans la liste déroulante située sous le nœud / resource, choisissez ANY, puis choisissez l'icône en forme de coche.
  4.  Dans le volet / - ANY - Setup, dans Type d'intégration, choisissez Mock.
    Remarque : une intégration de type « Mock » répondra à toutes les demandes qui lui parviendront.
  5. Choisissez Enregistrer.

Pour en savoir plus, reportez-vous à Configurer des méthodes d'API REST dans API Gateway.

Déploiement de l'API REST privée

  1. Dans le volet Ressources de la console API Gateway, choisissez Actions, puis choisissez Déployer l'API.
  2. Dans la boîte de dialogue Déployer l'API, saisissez les informations suivantes :
    Dans Étape de déploiement, choisissez [New Stage].
    Dans le champ Nom de l'étape, saisissez un non. Exemple : dev ou test.
  3. Sélectionnez Déployer.
  4.  Dans le volet Éditeur d'étape, recherchez le message suivant : « Si le DNS privé est activé, utilisez cette URL : ». Copiez l'URL d'invocation de votre API REST privée.
    Remarque : veillez à utiliser l'URL d'invocation de l'API REST privée pour tester la configuration.

Pour en savoir plus, reportez-vous à Déploiement d'une API privée à l'aide de la console API Gateway.

Appeler l'API REST privée depuis le compte A pour tester la configuration

  1. À partir du compte A, lancez une instance Amazon Elastic Compute Cloud (Amazon EC2) dans le même Amazon VPC que celui de votre point de terminaison d'interface.
    Important : vous devez choisir le groupe de sécurité que vous avez associé à votre point de terminaison d'interface.
  2. Connectez-vous à l'instance Amazon EC2.
    Remarque : une instance EC2 peut entraîner des frais sur votre compte AWS. Si vous créez une instance à des fins de test, résiliez-la lorsque vous avez terminé vos tests pour éviter de générer des frais récurrents.
  3. À partir de la ligne de commande de votre instance Amazon EC2, exécutez l'une des commandes curl ci-dessous pour appeler l'API REST privée du compte B.
    Remarque : pour en savoir plus, reportez-vous à Invoquer votre API privée à l'aide de noms d'hôtes DNS publics spécifiques au point de terminaison. Pour obtenir plus d'informations sur curl, reportez-vous au site Web du projet curl.

Pour un nom DNS privé

Exécutez la commande suivante :

curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name

Remarque : remplacez https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name par l'URL d'invocation de votre API privée. Cette commande fonctionne uniquement si vous avez activé le DNS privé pour votre point de terminaison d'interface. Pour en savoir plus, reportez-vous à Invoquer votre API privée à l'aide de noms DNS privés.

Pour un alias Route 53 

Exécutez la commande suivante :

curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name

Remarque : remplacez a1bc234d5e par l'ID de votre API, vpce-1a2b3c456d7e89012 par l'ID du point de terminaison d'interface et region par la région de votre API. Remplacez stage-name par le nom de l'étape à laquelle vous avez déployé votre API privée. Pour en savoir plus, reportez-vous à Accès à votre API privée à l'aide d'un alias Route53.

Pour un nom DNS public avec un en-tête d'hôte

Exécutez la commande suivante :

curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"

Remarque : remplacez vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com par le nom DNS public de votre point de terminaison d'interface et stage-name par le nom de l'étape à laquelle vous avez déployé votre API privée. Remplacez a1bc234d5e.execute-api.region.amazonaws.com par l'URL d'invocation de votre API privée.

Pour un nom DNS public avec l'en-tête x-apigw-api-id

Exécutez la commande suivante :

curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e"

Remarque : remplacez vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com par le nom DNS public de votre point de terminaison d'interface et stage-name par le nom de l'étape à laquelle vous avez déployé votre API privée. Remplacez a1bc234d5e par l'ID de votre API.

4.    Examinez la sortie de la commande. API Gateway renvoie une réponse 200 OK si la connexion est établie correctement.

Informations connexes

Comment puis-je résoudre les problèmes de connexion à un point de terminaison d'une API privée d'API Gateway ?

Accéder à un service AWS à l'aide du point de terminaison d'un VPC d'interface

Passerelle API privée multi-régionale