Selon vous, quels sont les avantages et les inconvénients de l'utilisation de l'intégration Lambda avec et sans la fonctionnalité de proxy dans AWS API Gateway (et plus précisément, lors de l'utilisation de la structure sans serveur)? Voici ce que je pense jusqu'à présent:
Intégration Lambda avec Proxy
Intégration Lambda sans proxy
Quelles sont vos pensées? Utilisez-vous généralement des intégrations Lambda Proxy ou Lambda? Que préférez-vous et pourquoi?
EDIT: Jusqu'à présent, je suis enclin à toujours choisir de ne pas utiliser les fonctions de proxy pour les raisons évoquées (découplage et énonciation de dépendances - en-têtes, codes d'état, etc.).
Pas de proxy.
J'ai plusieurs déploiements SLS en production, certains générant des revenus, d'autres en tant qu'outils internes. Je n'utilise exclusivement aucun proxy. Je ne veux pas compter sur les structures d'AWS pour mon application. Par conséquent, si nous cessons d'être des amis, je peux migrer sans trop de peine.
En ce qui concerne les avantages de la procuration, je les considérerais comme des inconvénients, car ils estiment que vous en avez aussi, et comme un avantage. J'ai tout vu auparavant "on bouge super vite". Oui, nous devons être agiles et agir rapidement, mais pas au détriment de la réflexion. Cela arrive tout le temps à mes ingénieurs, c’est une chose d’être peu documenté/concepteur, c’est dire un peu moins que de dire: «La planification laisse à désirer, il suffit de coder». C’est comme ça que vous vous retrouvez, peu importe à quelle vitesse vous arrivez sur le marché. En l'absence de proxy (et d'une planification précoce de la structure de votre projet et peut-être d'une bonne idée de DDD), il est assez simple de migrer hors d'AWS si le monde brûlait.
De plus, il m'est très difficile de familiariser de nouveaux corps avec AWS. Une fois que vous savez que tout est joué, mais les développeurs sont des développeurs, pas des ingénieurs en infrastructure (ceux d'entre nous qui faisons les deux sont étonnamment rares). Abstraire aide les gens à être productifs au début de leur difficile parcours en bas du rabithole. Je préfère mon code de codeur que le besoin de me déranger à propos de CFN toutes les 20 minutes.
Il semble que AWS recommande de choisir Lambda Proxy Integration pour le développement de nouvelles API .
Remarque
L'intégration personnalisée Lambda, anciennement appelée intégration Lambda, est une technologie héritée. Nous vous recommandons d'utiliser l'intégration du proxy Lambda pour toute nouvelle API. Pour plus d'informations, voir Créer une API de passerelle d'API avec l'intégration du proxy Lambda.
Je comprends qu'il est beaucoup "plus rapide" (à court terme) de créer un noeud final d'API et une intégration lambda à l'aide d'une intégration proxy plutôt que d'une intégration personnalisée, mais je suis surpris que ce soit la recommandation pour tous Développement API/Lambda:
Nous avons également commencé avec Proxy, car il était très rapide de disposer de nombreuses fonctions. Nous nous sommes vite rendu compte que nous avions créé un couplage assez étroit avec la façon dont le proxy nous oblige à lire et écrire des entrées et que notre fonction ne devrait pas en être informée et devrait avoir des interfaces plus claires et plus simples. Et ensuite, nous voulions commencer à orchestrer quelques-unes de ces fonctions avec AWS Step Functions et nous nous sommes rendus compte que nous avions créé des fonctions qui ne fonctionnaient réellement qu'avec l'intégration de proxy . Pas avec Step Functions, et ils ne sont certainement pas facilement migrés.
Plus de proxy.