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

Dernière mise à jour : 24/08/2020

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

Solution

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

Un point de terminaison de 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 de VPC pour API Gateway :

1.    Ouvrez la console Amazon Virtual Private Cloud (Amazon VPC).

2.    Dans le volet de navigation sous Virtual Private Cloud, sélectionnez 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 le 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 le VPC dispose des « noms d'hôte DNS » activés, ce qui est une fonctionnalité facultative. Le fait de laisser ce paramètre activé interrompt tous les accès aux API API Gateway publiques dans le 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 de VPC. Le groupe de sécurité doit autoriser l'accès sur TCP/443 entrant à partir de votre VPC.

10.    Dans Policy (Stratégie), choisissez Full Access (Accès complet). Cette option autorise toutes les connexions entre votre VPC et le point de terminaison de 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 du VPC (par exemple, « vpce-01234567890abcdef »). Vous aurez besoin de cet ID ultérieurement pour modifier la stratégie 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.    Choisissez Create API (Créer une API).

4.    Pour le type d'API, choisissez REST API Private (API REST privée).

5.    Pour le API protocol (protocole API), choisissez REST.

6.    Sous Create a New API (Créer une API), choisissez Example d'API (Exemple d’API).

7.    Sous Settings (Paramètres), vérifiez que Endpoint Type (Type de point de terminaison) a la valeur Privé.

8.    Choisissez Import (Importer).

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

1.    Sur la page API Management (Gestion des API), choisissez Resource Policy (Stratégie de ressource).

2.    Copiez la stratégie ci-dessous vers votre stratégie de ressource.

{
    "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 du VPC que vous avez noté après la création du point de terminaison du VPC. Vous pouvez également trouver l'ID dans la console Amazon VPC sous Endpoints (Points de terminaison).
Remarque : cet exemple de stratégie permet d'accéder à toutes les ressources de l'API à partir de votre 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 stratégie de ressource, vous devez déployer l'API dans une étape pour mettre en oeuvre vos modifications. Pour déployer votre API dans une étape :

1.    Dans la console API Gateway, choisissez Resources  (Ressources) dans le volet de navigation.

2.    Sélectionnez Actions.

3.    Sous API Actions (Actions d’API), choisissez Deploy API ( (Déployer l’API).

4.    Pour Deployment stage (Étape de déploiement), choisissez [New Stage] (Nouvelle étape).

5.    Entrez un nom pour l’étape.

6.    Sélectionnez Deploy (Déployer). Les modifications sont déployées dans 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, choisissez Endpoints (Points de terminaison), puis sélectionnez le point de terminaison de VPC que vous avez créé.

2.    Sous Details (Informations), copiez le nom DNS du point de terminaison du VPC. Par exemple :
« vpce-0123456789abcdef-b238e1kf.execute-api.REGION.vpce.amazonaws.com ».

3.    À partir d'un ordinateur connecté à votre 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 du 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 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 du VPC sur la console Amazon VPC sous Endpoints (Points de terminaison).

4.    Si DNS fonctionne,faites 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 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 du VPC 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> (ID_DE_VOTRE_API). Confirmez que vous envoyez une demande GET . Vérifiez également que <STAGE> (ÉTAPE) a été correctement ajouté.


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


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