Pourquoi l'erreur HTTP 403 Forbidden (HTTP 403 Interdit) est-elle générée lorsque je me connecte à mes API d'API Gateway à partir d'un VPC ?

Dernière mise à jour : 17/06/2022

J'appelle mes API d'Amazon API Gateway depuis mon cloud privé virtuel (VPC), mais je reçois une erreur HTTP 403 Forbidden (HTTP 403 Interdit). Comment cela se fait-il ?

Brève description

L'erreur HTTP 403 Forbidden (HTTP 403 Interdit) se produit le plus souvent lorsque le DNS privé est activé pour un point de terminaison d'un VPC d'interface d'API Gateway qui est associé à un VPC. Dans ce scénario, toutes les demandes du VPC vers l'API d'API Gateway résolvent vers ce point de terminaison d'un VPC d'interface. Cependant, il n'est pas possible de se connecter à des API publiques à l'aide d'un point de terminaison d'un VPC.

Le nom DNS privé d'un point de terminaison d'un VPC est au format *.execute-api.<REGION>.amazonaws.com. Ce format correspond à l'URL d'appel par défaut de l'API Gateway pour les API publiques et privées. Par exemple, l'URL d'appel par défaut d'une API publique est https://abcd1234.execute-api.us-east-1.amazonaws.comabcd1234 est l'ID de l'API et us-east-1 est la région AWS de l'API.

Lorsqu'un DNS privé est activé sur un point de terminaison d'un VPC, l'URL d'appel de l'API est représentée par le nom DNS privé *.execute-api.us-east-1.amazonaws.com, où * est un espace réservé pour l'ID d'API. Lorsqu'une requête DNS est résolue pour une API publique à partir d'un VPC, le DNS résolu pointe vers l'adresse IP privée du point de terminaison d'un VPC associé au lieu de l'adresse IP publique de l'API publique. L'appel d'API est alors acheminé vers l'API publique via le point de terminaison d'un VPC au lieu d'être acheminé via Internet. Comme les points de terminaison d'un VPC ne peuvent acheminer le trafic que vers des API privées, le résultat est une erreur HTTP 403.

Si le DNS privé n'est pas activé pour votre point de terminaison d'un VPC d'interface, ou s'il n'y a pas de point de terminaison dans votre VPC, accédez à la section Connexion aux API publiques lorsque le DNS privé n'est pas activé.

Solution

Confirmez que le DNS privé est activé pour un point de terminaison d'un VPC d'interface associé à votre VPC

Vérifiez votre VPC pour voir s'il existe un point de terminaison d'un VPC d'interface permettant d'accéder à une API privée. S'il existe un point de terminaison d'interface, vérifiez que les paramètres DNS privé sont activés. Pour plus d'informations, consultez Attributs DNS dans votre VPC.

Connexion aux API publiques avec le DNS privé activé

Si le DNS privé est activé, configurez des nom de domaine personnalisés optimisés pour la périphérie ou des noms de domaine personnalisés régionaux pour vous connecter aux API publiques.

Important : les ressources de votre VPC qui tentent de se connecter à vos API publiques doivent avoir une connectivité Internet. En outre, lorsque vous configurez des enregistrements DNS pour un nom de domaine personnalisé régional, vous devez utiliser des enregistrements d'alias de type A. Cependant, avec les noms de domaine personnalisés optimisés pour la périphérie, utilisez des enregistrements d'alias de type A ou des enregistrements CNAME.

Connexion aux API publiques lorsque le DNS privé n'est pas activé

Si le DNS privé n'est pas activé pour le point de terminaison d'un VPC d'interface, ou qu'il n'y a pas de point de terminaison dans votre configuration Amazon Virtual Private Cloud (Amazon VPC), confirmez que les conditions suivantes sont remplies :

Lorsque votre VPC est autorisé à accéder à vos API publiques, utilisez le DNS public pour vous connecter à vos API publiques. Pour plus d'information, consultez Contrôle et gestion de l'accès à une API REST dans API Gateway.

(Facultatif) Modifier le paramètre DNS privé d'un point de terminaison d'un VPC d'interface

Les utilisateurs peuvent modifier le paramètre DNS privé d'un point de terminaison d'un VPC d'interface à tout moment. La modification de ce paramètre affecte la résolution de l'URL d'étape d'une API dans l'adresse IP privée du point de terminaison d'un VPC d'interface.

Remarque : la modification du paramètre DNS privé affecte la manière dont les utilisateurs peuvent se connecter aux API privées et aux API publiques à partir d'un VPC.

  1. Dans la console Amazon VPC, ouvrez le panneau Endpoints (Points de terminaison).
  2. Sélectionnez le point de terminaison d'un VPC d'interface.
  3. Choisissez Actions (Actions), puis Modify Private DNS names (Modifier les noms DNS privé).
  4. Pour Enable Private DNS Name (Activer le nom DNS privé), cochez ou décochez la case Enable for this endpoint (Activer pour ce point de terminaison).
  5. Choisissez Modify Private DNS names (Modifier les noms DNS privé).

Pour plus d'informations, consultez Afficher et mettre à jour les attributs DNS de votre VPC.