En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Comment puis-je configurer API Gateway avec ma propre distribution CloudFront ?

Lecture de 9 minute(s)
0

Je souhaite un point de terminaison d'API optimisé pour les périphériques dans Amazon API Gateway, mais je souhaite créer ma propre distribution Amazon CloudFront pour celui-ci.

Brève description

Si vos clients d'API sont dispersés géographiquement, utilisez un point de terminaison d'API optimisé pour les périphériques dans API Gateway. Ce type de point de terminaison fait office de point de terminaison régional avec une distribution Web CloudFront gérée par AWS afin d'améliorer le temps de connexion client.

Pour utiliser le réseau mondial de diffusion de contenu CloudFront et maintenir un meilleur contrôle sur la distribution, utilisez une API régionale avec une distribution Web CloudFront personnalisée.

Résolution

Prérequis : Créez une fonction AWS Lambda à intégrer à votre API REST API Gateway et créez une API régionale dans API Gateway.

Créez un certificat SSL/TLS dans AWS Certificate Manager (ACM) dans la région us-east-1 et dans la même région AWS que votre API REST API Gateway. Pour obtenir un certificat pour un nom de domaine émis ou importé dans ACM, procédez comme suit :

  1. Enregistrez votre domaine Internet. Vous pouvez utiliser Amazon Route 53 ou un bureau de domaine d'enregistrement tiers agréé.
  2. Créez un certificat SSL/TLS pour le nom de domaine dans ACM ou importez-en un dans ACM.

Configurer une méthode GET pour votre API

Effectuez les opérations suivantes :

  1. Ouvrez la console API Gateway.
  2. Choisissez le nom de votre nouvelle API régionale.
  3. Sélectionnez Créer une ressource.
  4. Pour Nom de la ressource, saisissez salutations.
  5. Sélectionnez Créer une méthode.
  6. Sélectionnez GET pour Type de méthode, puis sélectionnez Fonction Lambda pour Type d'intégration. Puis, activez le bouton d’intégration de proxy Lambda et sélectionnez votre fonction Lambda.

Déployer votre API et identifier l'URL d'invocation de votre API

Effectuez les opérations suivantes :

  1. Déployez votre API sur une étape.
  2. AU sommet du volet Éditeur d’étape, copiez l'URL d'invocation pour la méthode HTTP GET de la ressource salutations dans votre presse-papiers.

Exemple d'URL d'invocation de l'API Gateway API :

https://restApiId.execute-api.region.amazonaws.com/stageName/greetings

Tester votre API pour obtenir une réponse 200 OK

Pour confirmer que votre API renvoie une réponse 200 OK, testez l'URL d'invocation de votre API via la console API Gateway, l'application Postman ou curl. Pour plus d'informations sur Postman et curl, consultez le site Web de Postman et le site Web de curl.

Utiliser curl pour tester votre API afin d'obtenir une réponse 200 OK

En fonction de votre système d’exploitation, exécutez l’une des commandes suivantes.

Remarque : Remplacez https://restApiId.execute-api.region.amazonaws.com/stageNamee/greetings par l'URL d'invocation de votre API.

Pour Linux, exécutez la commande suivante :

curl -IX GET https://restApiId.execute-api.region.amazonaws.com/stageName/greetings

Pour Windows PowerShell, exécutez la commande suivante :

curl https://restApiId.execute-api.region.amazonaws.com/stageName/greetings

Remarque : Si vous obtenez un code de statut autre que 200 OK, vérifiez la console pour confirmer que votre API est déployée sur votre étape. Vérifiez également que votre URL d'invocation spécifie correctement votre étape.

Créer une distribution Web CloudFront

Effectuez les opérations suivantes :

  1. Ouvrez la console CloudFront.

  2. Sélectionnez Créer une distribution.

  3. Pour Nom de domaine de l’origine, saisissez l'URL d'invocation de votre API. Puis, supprimez le nom de l'étape et de la ressource.
    Exemple de nom de domaine d'origine :

    https://restApiId.execute-api.region.amazonaws.com
  4. Pour Protocole, sélectionnez HTTPS uniquement.
    Remarque : API Gateway ne prend pas en charge les points de terminaison non chiffrés (HTTP). Pour plus d'informations, consultez les FAQ sur Amazon API Gateway.

  5. Pour Protocole SSL minimum de l’origine, il est recommandé de choisir TLSv1.2. Ne choisissez pas SSLv3. API Gateway ne prend pas en charge le protocole SSLv3.

  6. Pour Chemin de l’origine, saisissez le nom de l’étape de votre API suivi d'une barre oblique (/stageName). Ou, pour saisir vous-même le nom de l’étape lorsque vous invoquez l'URL, ne saisissez rien dans Chemin de l’origine.
    Remarque : Si vous saisissez un nom d’étape incorrect pour Chemin de l’origine et que vous invoquez la distribution CloudFront, vous pourriez recevoir une erreur. Par exemple, vous pourriez recevoir une erreur de requête non autorisée qui renvoie le message « Missing Authentication Token » et un code de réponse 403 Forbidden.

  7. (Facultatif) Pour transférer des en-têtes personnalisés vers votre origine, saisissez un ou plusieurs en-têtes personnalisés pour En-têtes personnalisés de l’origine.

  8. Suivez les instructions de la section Si vous utilisez l'authentification IAM pour votre API ou des noms de domaine personnalisés pour votre distribution Web CloudFront, le cas échéant.

  9. (Facultatif) Sous Paramètres de distribution, configurez les paramètres supplémentaires que vous souhaitez personnaliser.

  10. Sélectionnez Créer une distribution.

  11. Attendez 15 à 20 minutes pour que votre distribution soit déployée. Lorsque le Statut de distribution apparaît comme Déployé dans la console, la distribution est prête.

Pour plus d'informations, consultez la rubrique Créer une distribution.

Tester votre distribution Web CloudFront

Effectuez les opérations suivantes :

  1. Ouvrez la console CloudFront.

  2. Copiez le nom de domaine de distribution de votre distribution dans votre presse-papiers.
    Exemple de nom de domaine non personnalisé :

    a222222bcdefg5.cloudfront.net
  3. Testez le nom de domaine pour obtenir une réponse 200 OK. Si vous obtenez un code d’erreur de serveur 500, il est possible que la distribution ne soit pas déployée. Si vous n'obtenez aucune réponse, cela signifie que l'enregistrement DNS CloudFront ne s'est pas encore propagé. Dans les deux cas, attendez 15 à 20 minutes après avoir créé votre distribution, puis recommencez la procédure.

Important : Les étapes précédentes concernent les ressources d'API pour lesquelles l'authentification AWS Identity and Access Management (IAM) n'est activée pour aucune des méthodes de ressources. Si vous disposez de méthodes utilisant l'authentification IAM, ajoutez le nom de la ressource à la fin du nom de domaine de distribution lorsque vous invoquez votre API. L'URL d'appel complète (y compris le nom de la ressource) ressemble à l'un des exemples suivants.

Exemple d'URL d'appel de l'API API Gateway avec un chemin d'origine :

https://distributionDomainName/stageName/resourceName

Exemple d'URL d'appel de l'API API Gateway sans chemin d'origine :

https://distributionDomainName/resourceName

Pour plus d'informations sur la façon de tester votre distribution, consultez la section Comment puis-je activer l'authentification IAM pour les API API Gateway ?

Si vous utilisez l'authentification IAM pour votre API ou des noms de domaine personnalisés pour votre distribution Web CloudFront

Par défaut, CloudFront ne transmet pas les en-têtes d'autorisation entrants vers l'origine (pour ce cas d'utilisation, API Gateway). Si vous utilisez l'authentification IAM pour votre API ou des noms de domaine personnalisés pour votre distribution, effectuez l'une des actions suivantes.

(Pour l'authentification IAM) Ajoutez l'en-tête d’autorisation à votre liste d'autorisations CloudFront

Effectuez les opérations suivantes :

  1. Créez une distribution CloudFront.
  2. Sur la page Créer une distribution, pour Comportement du cache par défaut et requêtes d’origine, sélectionnez les paramètres de cache hérités.
  3. Sélectionnez Inclure les en-têtes suivants dans la liste déroulante En-têtes. Puis, sélectionnez Autorisation dans la liste des en-têtes qui s'affichent. Configurez les en-têtes que vous souhaitez transmettre à votre API.
    -ou-
    Pour Requêtes de clé de cache et d'origine, sous Stratégie de cache, choisissez une stratégie de cache existante ou créez-en une nouvelle. La stratégie doit ajouter l'en-tête Autorisation à votre liste d'autorisations CloudFront.
  4. (Facultatif) Pour tester la configuration, procédez comme suit :
    Créez la signature Signature Version 4 requise pour votre point de terminaison API Gateway par programmation. Pour la valeur de l’hôte, saisissez l'URL d'invocation de votre API Gateway. Pour la valeur du point de terminaison, saisissez l'URL de votre distribution Web CloudFront.
    Exemple d'URL d'invocation d'API Gateway :
    example_api_id.execute.example_region.amazon.com
    Exemple d'URL de distribution Web CloudFront :
    d######.cloudfront.net

Remarque : Si vous utilisez l'application Postman, dans l'onglet Authorisation, pour Type, sélectionnez AWS Signature. Puis, saisissez Clé d'accès et Clé secrète. Postman utilise les informations d'identification que vous saisissez pour générer les en-têtes requis. Puis, utilisez l'en-tête Autorisation (et tous les en-têtes SignedHeaders) générés à partir du processus Signature Version 4 pour envoyer la requête d'API à la distribution CloudFront.

(Pour les noms de domaines personnalisés ou l'authentification IAM) Configurez un nom de domaine personnalisé régional dans API Gateway pour accéder à votre API

Effectuez les opérations suivantes :

  1. Créez une nouvelle API régionale dans API Gateway ou remplacez votre API API Gateway optimisée pour les périphériques par une API régionale.

  2. Configurez un nom de domaine personnalisé régional pour l'API et créez un mappage d'API pour votre API.
    **Remarque :**Utilisez ce nom de domaine personnalisé lorsque vous accédez à votre API via CloudFront.

  3. Créez une distribution Web CloudFront, mais pour Nom de domaine de l’origine, saisissez le nom de domaine cible de votre API Gateway au lieu de l'URL d'invocation de votre API.
    Remarque : Trouvez le nom de domaine cible de votre API Gateway dans la section Configuration du point de terminaison des détails de votre domaine personnalisé.
    Exemple de nom de domaine cible API Gateway :

    d-######.execute-api.example-region.amazonaws.com
  4. Sur la page Créer une distribution, pour Comportement du cache par défaut et requêtes de clé de cache et d’origine, sélectionnez les paramètres de cache hérités.

  5. Sélectionnez Inclure les en-têtes suivants dans la liste déroulante En-têtes. Puis, sélectionnez l'hôte et l'autorisation dans la liste des en-têtes qui s'affichent. Configurez les en-têtes que vous souhaitez transmettre à votre API.
    -ou-
    Pour Requêtes de clé de cache et d'origine, sous Stratégie de cache, choisissez une stratégie de cache existante ou créez-en une nouvelle. La stratégie doit ajouter l'en-tête Autorisation à votre liste d'autorisations CloudFront.

  6. Dans Paramètres de distribution, pour Nom de domaine alternatif, saisissez le nom de domaine personnalisé que vous avez créé.

  7. Dans la section Certificat SSL, sélectionnez Certificat SSL personnalisé. Puis, ajoutez le certificat AWS Certificate Manager (ACM) pour ce domaine.

  8. Après avoir déployé la distribution Web CloudFront, configurez l'enregistrement DNS pour mapper le domaine personnalisé à la distribution Web CloudFront. Pour ce faire, créez un alias ou un enregistrement CNAME. Pour plus d'informations, consultez la section Utiliser des URL personnalisés en ajoutant des noms de domaine alternatifs (CNAME).

  9. (Facultatif) Pour tester la configuration, créez une demande signée Signature Version 4 pour votre nom de domaine personnalisé par programmation.
    Remarque : Vous pouvez également utiliser l'application Postman pour tester la configuration.