web-dev-qa-db-fra.com

Redirigez les requêtes http: // vers https: // sur AWS API Gateway (à l'aide de domaines personnalisés)

J'utilise AWS API Gateway avec un domaine personnalisé . Lorsque j'essaie d'accéder à https : //www.mydomain.com cela fonctionne parfaitement, mais quand j'essaye http : //www.mydomain.com il ne peut pas se connecter.

Existe-t-il un moyen de rediriger le http -> https avec le domaine personnalisé dans API Gateway? Sinon, existe-t-il un moyen de faire fonctionner les liens http: // tout comme les liens https: //?

22
supersan

API Gateway ne prend pas directement en charge http sans TLS, probablement en tant que fonctionnalité de sécurité, ainsi que pour certaines considérations pratiques.

Il n'y a pas un moyen particulièrement bon de le faire pour les API en général, car la redirection d'une demande POST de HTTP vers HTTPS est en fait un peu inutile - les données ont déjà été envoyées de manière non sécurisée au moment où la redirection est générée, sauf si le client a demandé au serveur d'inspecter les en-têtes de demande avant l'envoi du corps, avec Expect: 100-continue.

Vous pouvez créer une distribution CloudFront et la configurer pour rediriger les demandes GET et HEAD de HTTP vers HTTPS ... mais si vous envoyez une demande POST à une telle distribution, CloudFront ne redirige pas - il lance simplement une erreur, car (comme indiqué) une telle redirection serait plus nuisible qu'utile.

Cependant ... si GET est votre application, alors c'est assez simple: commencez par déployer votre API avec un point de terminaison régional (pas Edge-Optimized) avec un nom d'hôte attribué par le système, pas un domaine personnalisé.

Ensuite, créez une distribution CloudFront qui utilise ce point de terminaison d'API régional comme serveur d'origine et configurez le comportement de la distribution CloudFront pour rediriger HTTP vers HTTPS. Associez votre nom de domaine personnalisé à la distribution CloudFront, plutôt qu'à API Gateway directement.

11
Michael - sqlbot