J'essaie de placer une passerelle API Amazon devant un équilibreur de charge d'application, qui équilibre le trafic vers mon cluster ECS, où tous mes microservices sont déployés. La motivation pour utiliser la passerelle API est d'utiliser un autorisateur personnalisé via une fonction lambda.Amazon API Gateway en face d'ELB et ECS Cluster
Schéma du système
En termes Amazon (https://aws.amazon.com/api-gateway/faqs/): "demandes de procuration aux opérations de back-end doivent également être accessibles au public sur Internet". Cela me force à rendre l'ELB public (internet-facing) au lieu d'interne. Ensuite, j'ai besoin d'un moyen de m'assurer que seulement la passerelle API est capable d'accéder à l'ELB en dehors du VPC.
Ma première idée était d'utiliser un certificat client dans l'API Gatway, mais l'ELB ne semble pas le supporter.
Toutes les idées seraient très appréciées!
Je ne pense pas qu'il y ait une solution facile. API Gateway n'est pas pour vous ou vous devez en faire un peu plus. Les solutions incluent mettre HAProxy avant l'ALB qui vérifiera le certificat de client. Ou mettez un lambda avant l'ALB mais cela exigera que toute la réponse soit tamponnée, ce qui pourrait ralentir les choses. Ou si vous pouvez ensuite injecter un en-tête secret à la demande de API Gateway à l'ALB. Ce secret sera ensuite vérifié dans les backends. Je ne recommanderais pas la liste blanche IP, car les plages d'adresses IP de la passerelle API ne sont pas statiques et peuvent modifier un élément de rupture. – doorstuck
Merci @doorstuck. Je voudrais éviter d'incorporer de nouveaux composants comme le HAProxy. Je suppose que ce scénario (API Gateway, ELB, ECS Cluster) est assez commun. AWS ne fournit-il pas une solution prête à l'emploi? –
API Gateway est plus adaptée aux services de la fonction Lambda. Lorsqu'on les place devant des conteneurs docker avec des services hébergés, j'ai l'impression que cela ajoute trop de latence et de complexité. J'utilise un autre proxy à la place de API Gateway puisque je n'utilise que la partie proxy d'API Gateway. J'ai utilisé Skipper par Zalando avec succès. Mais si vous voulez utiliser des autorisateurs, la mise en cache cloudfront, etc., alors API Gateway est toujours la solution. – doorstuck