Comment puis-je invoquer une API privée vers une passerelle d'API à l'aide d'une application ou d'un Network Load balancer ?

Lecture de 6 minute(s)
0

Je souhaite configurer mon API privée pour Amazon API Gateway en tant que cible derrière un équilibreur de charge. Je voudrais ensuite utiliser un compte AWS pour accéder à mon API privée à partir d'une application ou d'un Network Load Balancer.

Brève description

Pour accéder à votre API privée à l'aide d'AWS Direct Connect ou d'Amazon Route 53, reportez-vous à la section Comment invoquer une API privée. Vous pouvez aussi accéder à une API REST privée de passerelle d'API dans un autre compte AWS à l'aide d'un point de terminaison d'un VPC.

La solution ci-après utilise une adresse IP d'interface réseau Elastic du point de terminaison d'un Amazon Virtual Private Cloud (Amazon VPC). Avec cette adresse IP, vous pouvez ajouter votre API privée en tant que cible à l'équilibreur de charge.

Important : la passerelle d'API ne prend pas en charge les noms de domaine personnalisés pour les API privées. Pour contourner ce problème, vous pouvez invoquer et associer le domaine à un équilibreur de charge. Utilisez ensuite la configuration suivante pour invoquer l'API privée.

Résolution

Créer un point de terminaison d'un Amazon VPC

1.    Ouvrez la console Amazon VPC.

2.    Sélectionnez Points de terminaison, puis choisissez Créer un point de terminaison.
Remarque : si des points de terminaison d'un Amazon VPC sont déjà configurés dans votre VPC avec l'API execute-api, désactivez le DNS privé.

3.    Pour les Services, sélectionnez com.amazonaws.com.your-region.execute-api.

4.    Pour VPC, sélectionnez votre Amazon VPC.

5.    Pour Sous-réseaux, sélectionnez deux sous-réseaux dans différentes zones de disponibilité (ID AZ), puis cliquez sur Créer un point de terminaison.

6.    Sélectionnez votre point de terminaison, choisissez Sous-réseaux, puis copiez l'adresse IP.

Pour en savoir plus, reportez-vous à la section Créer un point de terminaison d'un VPC d'interface pour passerelle d'API execute-api.

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

1.    Ouvrez la console Passerelle d'API, puis sélectionnezCréer l'API.

2.    Pour l'API REST, sélectionnez Version.

3.    Dans Paramètres, entrez les informations suivantes : 
Pour Nom d'API, entrez un nom de l'API.
Pour Type de point de terminaison, sélectionnez Privé.
Pour les ID de point de terminaison, entrez l'ID de point de terminaison que vous avez créé.

4.    Sélectionnez Créer l'API.

5.    Dans le volet de navigation, sélectionnez Politique de ressources.

6.    Dans l'éditeur de politique de ressources, collez la politique suivante :

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

Remarque : remplacez vpce-081234d1ad408e par l'ID de votre point de terminaison d'un VPC. Remplacez arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID par l'ARN de votre API.

7.    Sélectionnez Enregistrer.

Pour en savoir plus, reportez-vous à la section Créer une API privée à l'aide de la console Passerelle d'API.

Créer ou importer un certificat public AWS Certificate Manager

Demandez un certificat public ou importez un certificat.

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

Créez un Application Load Balancer ou créez un Network Load Balancer.

Créer le groupe cible

1.    Ouvrez la console Amazon Elastic Compute Cloud (Amazon EC2).

2.    Dans le volet de navigation, dans Équilibrage des charges, sélectionnez Équilibreurs des charges, puis Groupes cibles.

3.    Sélectionnez Créer un groupe cible.

4.    Pour le Type de cible, sélectionnez les adresses IP.

5.    Pour le Nom du groupe cible, entrez un nom.

Application Load Balancer

Pour Protocole, sélectionnez HTTPS.
Pour Port, sélectionnez 443.
Pour VPC, sélectionnez votre VPC.
Pour le Chemin de surveillance de l'état, entrez 200 403 afin que le point de terminaison d'un VPC apparaisse étant En bon état dans le groupe cible.

Network Load Balancer

Pour Protocole, sélectionnez TLS.
Pour Port, sélectionnez 443.
Pour VPC, sélectionnez votre VPC.

6.    Sélectionnez Suivant.

7.    Dans Spécifier les adresses IP, entrez l'adresse IP que vous avez copiée dans la section Créer une interface de point de terminaison d'un Amazon VPC, puis choisissez Ajouter une adresse IPv4.

8.    Sélectionnez Créer un groupe cible.

Configurer l'équilibreur de charge

1.    Ouvrez la console EC2.

2.    Dans le volet de navigation, sélectionnez Équilibreurs de charge, puis Créer un équilibreur de charge.

Application Load Balancer

Pour Schéma, sélectionnez Accès à Internet ou Interne en fonction de votre configuration.
Pour Protocole, sélectionnez HTTPS.
Pour VPC et Sous-réseaux, sélectionnez votre VPC et vos sous-réseaux.

Network Load Balancer

Pour Schéma, sélectionnez **Accès à Internet ** ou Interne en fonction de votre configuration.
Pour Protocole, sélectionnez TLS.
Pour VPC et Sous-réseaux, sélectionnez votre VPC et vos sous-réseaux.
Pour Politique de sécurité, sélectionnez la politique par défaut ELBSecurityPolicy-TLS (recommandée).
Pour Certificat SSL/TLS par défaut, sélectionnez À partir d'ACM.
Cliquez sur le menu déroulant Sélectionner un certificat, puis sélectionnez votre certificat.

3.    Sélectionnez Créer un équilibreur de charge.

Remarque : les cibles de l'équilibreur de charge se trouvent dans les adresses IP de l'interface réseau élastique créée par le point de terminaison d'un VPC. Pour trouver ces interfaces réseau Elastic, sélectionnez votre point de terminaison d'un VPC, puis ouvrez l'onglet Sous-réseaux.

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

Créez une zone hébergée publique ou créez une zone hébergée privée.

Ensuite, créez un enregistrement CNAME et associez-le à votre application ou à votre Network Load Balancer.

Tests

Pour les équilibreurs de charge publics, vous pouvez effectuer une demande curl depuis votre machine locale.

Pour les équilibreurs de charge privés, lancez une nouvelle instance EC2 dans l'un des sous-réseaux de votre équilibreur de charge. Ensuite, effectuez une requête curl similaire à la requête suivante :

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'Host: <api-id>.execute-api.<region>.amazonaws.com'

-ou-

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'x-apigw-api-id:{api-id}'

Une demande aboutie renvoie un code de réponse 200 OK. Une demande infructueuse renvoie un code de réponse 403 Interdit ou une erreur de résolution DNS. Si vous rencontrez des problèmes, reportez-vous à la section Résoudre les problèmes liés à vos équilibreurs de charge.

Informations connexes

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

Comment puis-je résoudre les problèmes liés à la connexion à un point de terminaison d'API privé de passerelle d'API ?

Surveillance des API REST avec les métriques Amazon CloudWatch

Configuration de la journalisation CloudWatch pour une API REST dans une passerelle d'API

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an