Comment me connecter à une API Gateway privée via une connexion Direct Connect ?

Date de la dernière mise à jour : 21/01/2022

Comment me connecter à une Amazon API Gateway privée via une connexion AWS Direct Connect ?

Résolution

Créer un point de terminaison Amazon Virtual Private Cloud (Amazon VPC) pour le service Amazon API Gateway

Un point de terminaison d'un VPC permet aux ressources privées d'un VPC de communiquer en toute sécurité avec le service API Gateway. Pour créer un point de terminaison d'un VPC pour API Gateway :

  1. Ouvrez la console Amazon VPC console.
  2. Dans le panneau de navigation, sous Virtual Private Cloud (Cloud privé virtuel), choisissez Endpoints (Points de terminaison).
  3. Dans Service category (Catégorie de services), choisissez AWS services (Services AWS).
  4. Pour Service Name (Nom du service, recherchez « execute-api » par mot clé. Cela renvoie un seul résultat : « com.amazonaws.REGION.execute-api ».
  5. Sélectionnez « com.amazonaws.REGION.execute-api ».
  6. Pour VPC, sélectionnez l'Amazon VPC sur lequel votre connexion Direct Connect est configurée.
  7. Pour Subnets (Sous-réseaux), sélectionnez les sous-réseaux où vous souhaitez que l'API soit accessible.
  8. Pour Enable DNS name (Activer le nom DNS), désélectionnez la case à cocher Enable for this endpoint (Activer pour ce point de terminaison). La désactivation de ce paramètre nécessite que l'Amazon VPC dispose des « noms d'hôtes DNS » activés, ce qui est une fonction facultative. Le fait de laisser ce paramètre activé interrompt tous les accès aux API API Gateway publiques dans l'Amazon VPC déployé si le VPC utilise le DNS fourni par Amazon.
  9. Pour Security group (Groupe de sécurité), choisissez le groupe de sécurité du point de terminaison d'un VPC. Le groupe de sécurité doit autoriser l'accès sur TCP/443 entrant à partir de votre Amazon VPC.
  10. Dans Policy (Politique), choisissez Full Access (Accès complet). Cette option autorise toutes les connexions entre votre Amazon VPC et le point de terminaison d'un VPC en utilisant les autorisations AWS IAM.
  11. Choisissez Create Endpoint (Créer un point de terminaison).
  12. Notez l'ID de point de terminaison d'un VPC (par exemple, « vpce-01234567890abcdef »). Vous aurez besoin de cet ID ultérieurement pour modifier la politique de ressources de l'API.

Créer votre API REST privée, si vous n'en avez pas déjà une

  1. Ouvrez la console API Gateway.
  2. Sélectionnez la région de votre connexion Direct Connect.
  3. Sélectionnez Create API (Créer une API).
  4. Pour API type (type d'API), choisissez REST API Private (API REST privée).
  5. Pour API protocol (Protocole d'API), choisissez REST.
  6. Sous Create a New API (Créer une API), choisissez Example API (Exemple d'API).
  7. Sous Settings (Paramètres), vérifiez que Endpoint Type (Type de point de terminaison) a la valeur Private (Privé).
  8. Sélectionnez Import (Importer).

Autoriser le point de terminaison d'un VPC à accéder à l'API REST privée

  1. Sur la page API Management (Gestion des API), choisissez Resource Policy (Politique de ressource).
  2. Copiez la politique ci-dessous vers votre politique de ressources.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*/*/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": "{{vpceID}}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*/*/*"
        }
    ]
}

Remplacez la chaîne {{vpceId}} par l'ID du point de terminaison d'un Amazon VPC que vous avez noté après la création du point de terminaison d'un VPC. Vous pouvez également trouver l'ID dans la console Amazon VPC, sous Endpoints (Points de terminaison).
Remarque : cet exemple de politique permet d'accéder à toutes les ressources de l'API à partir de votre Amazon VPC. Pour restreindre davantage l'accès, modifiez la clé Resource (Ressource).

3.    Choisissez Save (Enregistrer).

Redéployer votre API pour valider les modifications

Maintenant que vous avez créé l'API et ajouté une politique de ressource, vous devez déployer l'API dans une étape pour implémenter vos modifications. Pour déployer votre API dans une étape :

  1. Dans la console API Gateway, choisissez Resources (Ressources) dans le panneau de navigation.
  2. Choisissez Actions.
  3. Sous API Actions (Actions d'API), choisissez Deploy API ( (Déployer l'API).
  4. Dans Deployment stage (Étape de déploiement), choisissez [New Stage] (Nouvelle étape).
  5. Saisissez un nom pour l'étape.
  6. Choisissez Deploy (Déployer). Les modifications sont déployées sur l'API. Ce processus peut prendre quelques minutes pour se propager.

Tester l'accès à l'API à partir de la connexion Direct Connect

  1. Sur la console Amazon VPC, choisisse  Endpoints (Points de terminaison), puis sélectionnez le point de terminaison d'un VPC que vous avez créé.
  2. Sous Details (Détails), copiez le nom DNS du point de terminaison d'un VPC. Par exemple,
    « vpce-0123456789abcdef-b238e1kf.execute-api.REGION.vpce.amazonaws.com ».
  3. À partir d'un ordinateur connecté à votre Amazon VPC à l'aide de Direct Connect, exécutez l'une des commandes suivantes pour tester la résolution du nom d'hôte DNS du point de terminaison d'un VPC.

Windows PowerShell :

nslookup <YOUR_VPCE_HOSTNAME>

-ou-

MacOS/UNIX :

nslookup <YOUR_VPCE_HOSTNAME>

La réponse doit renvoyer une adresse IP privée qui correspond au point de terminaison de votre Amazon VPC. Si vous ne recevez pas d'adresse IP privée dans la réponse, vérifiez le nom d'hôte du point de terminaison d'un VPC Amazon dans la console Amazon VPC, sous Endpoints (Points de terminaison).

4.    Si DNS fonctionne, envoyez une demande HTTP de test. Pour ce faire, vous avez besoin de l'ID d'API de la console API Gateway. Copiez l'ID d'API depuis la liste. L'ID API est une chaîne de caractères, tels que « chw1a2q2xk ».

5.    À partir d'un ordinateur sur site connecté à la connexion Direct Connect, exécutez la commande suivante :

Windows PowerShell :

curl -H @{'x-apigw-api-id' = '<YOUR_API_ID>'} https://<YOUR_VPCE_HOSTNAME>/<STAGE>

-ou-

MacOS/UNIX :

curl -IX GET -H 'x-apigw-api-id:<YOUR_API_ID>' https://<YOUR_VPCE_HOSTNAME>/<STAGE>

La première ligne de la réponse doit inclure « HTTP/1.1 200 OK ».

Si vous ne recevez pas de réponse, vérifiez que le groupe de sécurité associé au point de terminaison d'un VPC Amazon autorise les connexions entrantes sur TCP/443 à partir de votre adresse IP source. Vérifiez également que votre connexion utilise correctement votre connexion Direct Connect.

Si vous recevez une réponse « 403 Forbidden » (403 Interdit), vérifiez que vous avez défini l'en-tête <YOUR_API_ID>. Confirmez que vous envoyez une demande GET. Vérifiez également que <STAGE> a été correctement ajouté.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?