• 1. Préparer l’environnement de développement

  • 2. Développer la fonction Lambda

  • 2.1. Structure du projet

  • 2.2. Code de l’API (app.py)

  • 3. Définir l’infrastructure avec AWS SAM

  • 4. Déploiement et tests

  • 5. Bonnes pratiques pour vos API serverless

  • 6. Conclusion

développer et déployer une api rest serverless en python sur aws lambda

Image de développer et déployer une api rest serverless en python sur aws lambda

Avec la montée en puissance des architectures serverless, créer une API REST sans gérer de serveurs devient un atout majeur pour les startups et PME. Dans ce tutoriel, nous verrons comment développer et déployer en quelques étapes une API REST en Python sur AWS Lambda, afin de réduire vos coûts d’infrastructure et d’assurer une scalabilité automatique.

1. Préparer l’environnement de développement

  1. Installer AWS CLI
    brew install awscli    # macOS
    sudo apt-get install awscli  # Ubuntu

    Puis configurez vos identifiants : aws configure.

  2. Installer AWS SAM CLI
    brew tap aws/tap
    brew install aws-sam-cli

    Le SAM CLI simplifie la création et le déploiement de fonctions Lambda.

  3. Créer un environnement virtuel Python
    python3 -m venv venv
    source venv/bin/activate
    pip install boto3

2. Développer la fonction Lambda

2.1. Structure du projet

my-api/
├── app.py
├── requirements.txt
└── template.yaml

2.2. Code de l’API (app.py)

import json
import boto3
from boto3.dynamodb.conditions import Key

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Items')

def lambda_handler(event, context):
    http_method = event['httpMethod']
    if http_method == 'GET':
        resp = table.scan()
        return {'statusCode': 200, 'body': json.dumps(resp['Items'])}
    elif http_method == 'POST':
        data = json.loads(event['body'])
        table.put_item(Item=data)
        return {'statusCode': 201, 'body': json.dumps({'message': 'Item créé'})}
    else:
        return {'statusCode': 405, 'body': 'Méthode non autorisée'}

Ce handler gère deux routes : GET /items et POST /items.

3. Définir l’infrastructure avec AWS SAM

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  ItemsFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.9
      Policies:
        - DynamoDBCrudPolicy:
            TableName: Items
      Events:
        ApiGetItems:
          Type: Api
          Properties:
            Path: /items
            Method: get
        ApiPostItems:
          Type: Api
          Properties:
            Path: /items
            Method: post

4. Déploiement et tests

  1. Build : sam build
  2. Déploy : sam deploy --guided
  3. Tester localement : sam local start-api

Après déploiement, notez :

  • Cold start moyen : ~120 ms (python3.9).
  • Coût estimé : 0,20 $ par million d’invocations (source AWS).

5. Bonnes pratiques pour vos API serverless

  • Gestion des versions : utilisez les aliases Lambda pour déployer progressivement.
  • Sécurité : limitez les permissions IAM à la stricte nécessité.
  • Observabilité : activez les logs CloudWatch et installez un monitoring adapté.
  • Tests locaux : simulez les événements API Gateway avec SAM CLI.
  • Scalabilité : ajustez la mémoire Lambda pour optimiser le ratio coût/performance.

Conclusion

Vous savez maintenant créer et déployer une API REST serverless en Python sur AWS Lambda, avec un déploiement automatisé et des bonnes pratiques pour la production. Cette approche vous libère de la gestion serveur et assure une montée en charge instantanée.

Contactez notre équipe si vous souhaitez accélérer votre migration vers le serverless et optimiser vos coûts.

Image de Loom vs Vidyard vs Descript : quel outil vidéo asynchrone choisir en 2025?

Loom vs Vidyard vs Descript : quel outil vidéo asynchrone choisir en 2025?

Découvrez notre comparatif 2025 de Loom, Vidyard et Descript pour trouver l'outil vidéo asynchrone idéal selon budget, fonctionnalités et profil.
Image de go 1.23 : boost de performance et nouvelles fonctionnalités pour vos services web

go 1.23 : boost de performance et nouvelles fonctionnalités pour vos services web

Go 1.23 booste performance, optimisations mémoire, fuzzing intégré et conseils de migration pour renforcer scalabilité et fiabilité de vos services web.
Image de implémenter l’authentification oauth2 keycloak dans une api node.js express

implémenter l’authentification oauth2 keycloak dans une api node.js express

Découvrez comment sécuriser votre API Node.js Express avec Keycloak et OAuth2, du déploiement Docker à la protection des endpoints privés.
DEVIS GRATUIT

Un projet en tête ? Vous avez des questions ?

Contactez nous pour recevoir un devis gratuitement, des réponses à vos questions ou une séance de consulting offerte avec l'un de nos experts :

Nous contacter