Passer au contenu

Comment invoquer une API privée API Gateway à l’aide d’un Application Load Balancer ou d’un Network Load Balancer ?

Lecture de 5 minute(s)
0

Je souhaite utiliser un compte AWS pour accéder à mon API privée à partir d’un Application Load Balancer ou d’un Network Load Balancer.

Résolution

Pour accéder à votre API privée à l’aide d’AWS Direct Connect ou d’Amazon Route 53, consultez la section Invoquer une API privée. Vous pouvez également utiliser un point de terminaison Amazon Virtual Private Cloud (VPC) d’interface pour accéder à une API REST privée API Gateway dans un autre compte.

La résolution suivante utilise des adresses IP qui sont attribuées à un point de terminaison Amazon VPC execute-api. Vous pouvez ajouter votre API REST privée en tant que cible à un équilibreur de charge avec les adresses IP du point de terminaison de VPC.

Créer un point de terminaison Amazon VPC

Procédez comme suit :

  1. Ouvrez la console VPC Amazon.
  2. Sélectionnez Points de terminaison, puis Créer un point de terminaison.
  3. Dans Services, sélectionnez com.amazonaws.your-region.execute-api.
  4. Dans VPC, sélectionnez votre Amazon VPC.
  5. Dans Sous-réseaux, sélectionnez des sous-réseaux dans des zones de disponibilité différentes.
  6. Sélectionnez Créer un point de terminaison.
  7. Sélectionnez votre point de terminaison, choisissez Sous-réseaux, puis notez les adresses IP.

Pour plus d’informations, consultez la section API REST privées dans API Gateway.

Créer une API REST privée et accorder au point de terminaison de VPC l'autorisation d'invoquer votre API privée

Procédez comme suit :

  1. Ouvrez la console API Gateway.

  2. Sélectionnez Créer une API.

  3. Dans API REST, sélectionnez Créer.

  4. Dans Paramètres, pour Nom de l’API, saisissez un nom pour l’API.

  5. Dans Type de point de terminaison, sélectionnez Privé.

  6. (Facultatif) Dans ID de point de terminaison, saisissez votre ID de point de terminaison.

  7. Sélectionnez Créer une API.

  8. Dans le volet de navigation, choisissez Politique de ressources.

  9. Saisissez la politique suivante :

    {  "Version": "2012-10-17",  "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:your-region:ACCOUNT_ID:API_ID/*/*/*",
          "Condition": {
            "StringNotEquals": {
              "aws:SourceVpce": "vpce-081234d1ad408e"
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:your-region:ACCOUNT_ID:API_ID/*/*/*"
        }
      ]
    }

    Remarque : Remplacez vpce-081234d1ad408e par l’ID de votre point de terminaison de VPC. Remplacez arn:aws:execute-api:your-region:ACCOUNT_ID:API_ID par l’Amazon Resource Name (ARN) de votre méthode d'API.

  10. Sélectionnez Enregistrer.

Créer ou importer un certificat public AWS Certificate Manager

Vous pouvez soit demander un certificat public, soit importer un certificat.

Créer le groupe cible

Procédez comme suit :

  1. Ouvrez la console Amazon Elastic Compute Cloud (Amazon EC2).
  2. Dans le volet de navigation, sous Équilibrage des charges, choisissez Équilibreurs de charges, puis Groupes cibles.
  3. Sélectionnez Créer un groupe cible.
  4. Dans Type de cible, sélectionnez Adresses IP.
  5. Dans Nom du groupe cible, saisissez un nom.
  6. Dans Protocole, choisissez HTTPS pour un Application Load Balancer ou TLS pour un Network Load Balancer.
  7. Dans Port, choisissez 443.
  8. Dans VPC, sélectionnez votre VPC.
  9. Dans Protocole de surveillance de l'état, choisissez HTTPS.
  10. Dans Chemin d’accès à la surveillance de l’état, saisissez « / » et dans Codes de réussite, saisissez 200,403 afin que le point de terminaison de VPC soit considéré comme Sain.
  11. Sélectionnez Suivant.
  12. Dans Spécifier les adresses IP, saisissez les adresses IP que vous avez notées.
  13. Sélectionnez Ajouter une adresse IPv4.
  14. Ajoutez toutes les adresses IP, puis choisissez Inclure comme étant en attente ci-dessous.
  15. Sélectionnez Créer un groupe cible.

Créer un Application Load Balancer ou un Network Load Balancer

Pour obtenir des instructions, consultez la section Créer un Application Load Balancer ou Créer un Network Load Balancer.

Configurer l’équilibreur de charge

Procédez comme suit :

  1. Ouvrez la console Amazon EC2.
  2. Dans le volet de navigation, choisissez Équilibreurs de charge, puis Créer un équilibreur de charge.
  3. Dans Schéma, sélectionnez Accessible via Internet ou Interne.
  4. Dans Protocole, choisissez HTTPS pour un Application Load Balancer ou TLS pour un Network Load Balancer.
  5. Dans Actions par défaut, choisissez le groupe cible vers lequel vous souhaitez transférer le trafic.
  6. Dans VPC et Sous-réseaux, sélectionnez votre VPC et vos sous-réseaux.
  7. Dans Politique de sécurité, utilisez la dernière politique de sécurité prédéfinie pour un Application Load Balancer. Pour un Network Load Balancer, conservez la politique de sécurité par défaut.
  8. Dans Certificat SSL/TLS par défaut, sélectionnez À partir d'ACM.
  9. Choisissez Sélectionner un certificat, puis sélectionnez votre certificat.
  10. Sélectionnez Créer un équilibreur de charge.

Créer un nom de domaine personnalisé

Créez un nom de domaine personnalisé dans la console d’API Gateway. Puis, mappez l’API Rest privée sous le nom de domaine personnalisé.

Créer un enregistrement dans une zone hébergée publique ou privée Route 53

Créez une zone hébergée publique ou une zone hébergée privée. Puis, créez un enregistrement CNAME ou un enregistrement d’alias afin de pointer votre nom de domaine personnalisé vers votre Application Load Balancer ou Network Load Balancer.

Tester votre équilibreur de charge public ou privé

Pour les équilibreurs de charge publics, exécutez une commande curl depuis votre machine locale.

Pour les équilibreurs de charge privés, lancez une nouvelle instance EC2 dans le VPC où se trouve votre équilibreur de charge. Puis, exécutez la commande curl suivante :

curl -v https://{custom-domain-name}/<resource-path>

Une requête aboutie renvoie un code de réponse « 200 OK ». Une requête infructueuse renvoie un code de réponse « 403 Forbidden » ou une erreur de résolution DNS.

Pour en savoir plus, consultez les sections Comment résoudre les erreurs HTTP 403 provenant d'API Gateway ?, Résoudre les problèmes liés à vos Application Load Balancers et Résoudre les problèmes liés à votre Network Load Balancer.

Informations connexes

Comment puis-je me connecter à une passerelle d'API privée via une connexion Direct Connect ?

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

Surveiller l’exécution de l’API REST à l’aide des métriques Amazon CloudWatch

Configurer la journalisation CloudWatch pour les API REST dans API Gateway