• 1. déployer une application next.js sur aws lambda avec terraform et github actions

  • 1.1. Prérequis

  • 1.2. Préparer l’image Docker de votre app

  • 1.3. Décrire l’infrastructure avec Terraform

  • 1.4. Pipeline CI/CD avec GitHub Actions

  • 1.5. Vérification et performance

  • 1.6. Bonnes pratiques

déployer une application next.js sur aws lambda avec terraform et github actions

Image de déployer une application next.js sur aws lambda avec terraform et github actions

Automatiser le déploiement d’une application Next.js sur AWS Lambda garantit une montée en charge transparente et des coûts maîtrisés. Dans ce tutoriel, vous apprendrez à :

  • Packager votre app Next.js en image Docker
  • Décrire l’infrastructure serverless avec Terraform
  • Orchestrer le pipeline CI/CD avec GitHub Actions

déployer une application next.js sur aws lambda avec terraform et github actions

Prérequis

  • Node.js ≥16 et Next.js ≥12
  • Compte AWS avec AWS CLI configuré
  • Terraform ≥1.3 installé
  • Repository GitHub et secrets AWS_ROLE_ARN, ECR_REGISTRY configurés

1. Préparer l’image Docker de votre app

On part d’une image Lambda Node.js officielle pour limiter la taille :

FROM public.ecr.aws/lambda/nodejs:14
WORKDIR /var/task
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["server.handler"]  # Adapté à votre handler

Ensuite, construisez et poussez sur ECR :

docker build -t next-app .
aws ecr create-repository --repository-name my-next-app
aws ecr get-login-password --region eu-west-1 \
  | docker login --username AWS --password-stdin .dkr.ecr.eu-west-1.amazonaws.com
docker tag next-app:latest .dkr.ecr.eu-west-1.amazonaws.com/my-next-app:latest
docker push .dkr.ecr.eu-west-1.amazonaws.com/my-next-app:latest

2. Décrire l’infrastructure avec Terraform

provider "aws" {
  region = "eu-west-1"
}

resource "aws_ecr_repository" "next_app" {
  name = "my-next-app"
}

resource "aws_iam_role" "lambda_exec" {
  name = "lambda_exec_role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Action    = "sts:AssumeRole"
      Principal = { Service = "lambda.amazonaws.com" }
      Effect    = "Allow"
    }]
  })
}

resource "aws_lambda_function" "next" {
  function_name = "next-app"
  package_type  = "Image"
  image_uri     = "${aws_ecr_repository.next_app.repository_url}:latest"
  role          = aws_iam_role.lambda_exec.arn
}
Erreur fréquente : “AccessDeniedException” → vérifier que aws_iam_role.lambda_exec a la policy LambdaBasicExecutionRole.

3. Pipeline CI/CD avec GitHub Actions

name: Deploy Next.js to AWS Lambda

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '16'
      - name: Install deps & build
        run: |
          npm ci
          npm run build
      - name: Build & push Docker image
        env:
          ECR_REGISTRY: ${{ secrets.ECR_REGISTRY }}
        run: |
          docker build -t next-app .
          docker tag next-app:latest $ECR_REGISTRY/my-next-app:latest
          docker push $ECR_REGISTRY/my-next-app:latest
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-region: eu-west-1
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
      - name: Terraform deploy
        run: |
          cd terraform
          terraform init
          terraform apply -auto-approve

4. Vérification et performance

  • Testez avec curl ou Postman.
  • Cold start moyen : 150–250 ms (Node.js 14).
  • Warm start : ~50 ms. Surveillez avec CloudWatch Logs.

Bonnes pratiques

  • Principe du moindre privilège IAM.
  • Versioning des images Lambda pour déploiement canary.
  • Alertes CloudWatch + tableau de bord Grafana.
  • Optimisation des pages Next.js (compression, code splitting).

Pour approfondir Next.js, rendez-vous sur la page Next.js. Vous souhaitez un accompagnement sur vos pipelines CI/CD et architectures serverless ? Découvrez nos offres application web ou contactez-nous pour en discuter.

Image de Trello vs Asana vs monday.com : quel gestionnaire de projet choisir en 2025 ?

Trello vs Asana vs monday.com : quel gestionnaire de projet choisir en 2025 ?

Comparez Trello, Asana et monday.com pour trouver l’outil idéal en 2025 selon votre profil grâce à un comparatif ludique, anecdotes et chiffres clés
Image de google workspace lance duet ai en bêta : ce que les PME doivent savoir

google workspace lance duet ai en bêta : ce que les PME doivent savoir

Comment Duet AI en bêta de Google Workspace peut accélérer la productivité de votre PME, fonctionnalités clés, coûts et conseils pour bien démarrer
Image de configurer un pipeline ci/cd pour une application react avec gitlab ci, docker et kubernetes

configurer un pipeline ci/cd pour une application react avec gitlab ci, docker et kubernetes

Apprenez à mettre en place un pipeline CI/CD pour automatiser build, tests et déploiement d’une application React avec GitLab CI, Docker et Kubernetes.
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