web-dev-qa-db-fra.com

AWS Lambda vs Elastic Beanstalk

Je suis nouveau sur aws.

Je vais développer une application complète REST qui va héberger sur aws.

J'ai décidé d'utiliser

  • Amazon S3 pour le contenu statique
  • Pool d'utilisateurs Amazon Cognito pour l'authentification
  • Amazon DynamoDB en tant que db

Je ne sais pas où mon application va être hébergée. J'ai 2 idées pour ça.

  1. Fonction AWS Lambda + passerelle API

Puis-je implémenter une application entière dessus?

  1. Haricot élastique

Puis-je y intégrer tous les services aws ci-dessus? (Backend sur .net core web api 2.0)

Veuillez me guider

7

Elastic Benstalk Avec Elastic Beanstalk, vous avez accès à une plateforme en tant que service (PaaS) et vous pouvez gérer certains aspects de l'infrastructure. Les développeurs peuvent créer, tester et déployer des applications sur la plateforme. Vous n'avez pas à gérer le provisionnement, l'équilibrage de charge ou la mise à l'échelle. Elastic Beanstalk prend en charge de nombreux environnements de serveur, notamment Apache HTTP Server, Nginx, Microsoft IIS et Apache Tomcat. Il prend en charge fortement les conteneurs Docker, ce qui permet un déploiement facile des applications.

Les développeurs peuvent utiliser la ligne de commande ou la console de gestion Elastic Beanstalk. La console leur permet de configurer des configurations et de gérer des environnements et des applications.

Lambda Les développeurs qui téléchargent vers Lambda n'ont pas à gérer l'environnement de leur code. Il s'agit d'un service "sans serveur" qui permet à du code extérieur ou à des événements d'appeler des fonctions. Lambda ne stocke pas de données, mais il permet d'accéder à d'autres services qui le font. Ce qui rend vraiment Lambda attrayant, c'est que vous ne payez rien sauf lorsque vous exécutez du code dessus. Vous pouvez extraire des éléments de calcul lourds de vos applications et les déployer sur Lambda pour un coût très faible.

Les fonctions d'étape AWS implémentent une machine d'état, vous permettant d'appeler une série de fonctions Lambda et de gérer les conditions d'erreur. Les fonctions lambda peuvent servir de backend à une application qui s'exécute ailleurs ou vous pouvez même créer une application web à l'aide d'une série de fonctions lambda.

Oui, vous pouvez créer une API RESTful à l'aide d'une architecture sans serveur lambda, API Gateway, S3, SQS, SNS, cognito, DynamoDB en appelant une série de fonctions lambda s'appelant séquentiellement.

Elastic Beanstalk traitera essentiellement du provisionnement d'instance EC2, de l'équilibrage de charge ou de la mise à l'échelle, etc.

Vous pouvez même utiliser Elastic Beanstalk et Lambda ensemble. Une application légère sur EC2, gérée avec Elastic Beanstalk, peut utiliser Lambda pour son traitement intensif. L'application pourrait s'exécuter sur une instance à bas prix, et les coûts de Lambda seront nettement inférieurs à ceux des instances haut de gamme qui seraient autrement nécessaires.

Lambda a des limites strictes. La charge utile du corps de la demande ne peut pas dépasser 6 Mo. La durée d'une demande ne peut pas dépasser 300 secondes. Cela le rend impropre au passage de gros blocs de données ou aux fonctions qui attendent longtemps, mais il existe souvent des solutions de contournement.

Il existe également des limites de déploiement; un package de déploiement ne peut pas dépasser 50 Mo. Le code lambda peut inclure des bibliothèques existantes, mais de très grandes bibliothèques peuvent poser problème.

13
amittn

Étant donné que la gestion du système sous-jacent peut ne pas vous intéresser, vous devez opter pour AWS Lambda + API Gateway.

1
Taha