Maison > interface Web > js tutoriel > Comment valider les demandes lors de l'utilisation de l'URL de la fonction AWS Lambda

Comment valider les demandes lors de l'utilisation de l'URL de la fonction AWS Lambda

Barbara Streisand
Libérer: 2024-12-08 17:51:12
original
444 Les gens l'ont consulté

How to validate requests when using AWS Lambda Function Url

Introduction

Une URL de fonction Lambda est un point de terminaison HTTPS intégré pour une fonction AWS Lambda. Il vous permet d'invoquer directement une fonction Lambda via HTTP sans avoir besoin d'un service intermédiaire comme API Gateway. Cela simplifie les déploiements lorsque votre fonction doit être accessible publiquement ou intégrée dans des applications Web. La validation des requêtes avec les URL de fonction Lambda offre des défis et des nuances uniques, contrairement à API Gateway où vous pouvez utiliser Model et RequestValidator See.

Dans cet article, je vais vous expliquer comment vous pouvez simplement valider votre objet d'événement et également renvoyer l'erreur appropriée en cas de disparité dans la charge utile de l'événement reçu.

Pourquoi avez-vous besoin de l'URL de la fonction Lambda

Une URL de fonction Lambda est un point de terminaison dédié avec une URL unique qui fournit un moyen simple d'appeler une fonction Lambda via HTTP. Lorsque vous créez une URL de fonction Lambda, AWS génère automatiquement une URL pour la fonction et vous pouvez configurer l'authentification basée sur IAM ou la laisser publique (pour un accès ouvert).

L'importance de l'URL de la fonction Lambda est :

  1. Simplicité : supprime le besoin de configurer et de gérer une passerelle API lorsque vous n'avez besoin que d'un simple point de terminaison HTTP.

  2. Rentable : réduit les coûts par rapport à l'utilisation d'API Gateway pour les cas d'utilisation de base, car les URL de fonction Lambda n'entraînent aucun frais supplémentaire au-delà de la tarification Lambda standard.

  3. Déploiement rapide : idéal pour le prototypage rapide ou les cas d'utilisation où la configuration d'API Gateway est inutile.

  4. Support HTTPS natif : fournit une communication sécurisée sans configuration supplémentaire.

  5. Contrôle d'authentification : prend en charge l'authentification basée sur IAM pour un accès sécurisé ou peut être défini sur public pour les points de terminaison ouverts.

Quand auriez-vous besoin de l'URL de la fonction Lambda

  1. Microservices et Webhooks :

    • Créez facilement des microservices qui répondent aux requêtes HTTP.
    • Utilisez les URL des fonctions Lambda pour gérer les rappels de webhooks provenant de services tiers (par exemple, systèmes de paiement, notifications).
  2. Prototypage et démos :

    • Exposez rapidement une fonction backend à des fins de démonstration sans configurer API Gateway.
  3. Automatisation et outils internes :

    • Créez des outils internes auxquels les collaborateurs peuvent accéder directement via une simple URL.
  4. Backends de sites Web statiques :

    • Associez un site Web statique hébergé sur Amazon S3 ou CloudFront avec une URL de fonction Lambda pour une fonctionnalité dynamique (par exemple, soumissions de formulaires).
  5. Intégrations IoT :

    • Autoriser les appareils IoT à déclencher des fonctions sans serveur directement via les points de terminaison HTTP.

Comment valider les requêtes dans l'URL de la fonction Lambda

Mesures:

  1. Définissez votre modèle de demande
  2. Utilisez le modèle de requête réutilisable pour valider les données du corps de votre événement (charge utile)
  3. Branchez le modèle à votre méthode de gestionnaire

Définir votre modèle de demande

Définissez le modèle du corps de votre événement. Supposons que vous souhaitiez un nom, une adresse e-mail et un numéro de mobile facultatif. Nous allons créer un modèle qui correspond au corps de l'événement attendu.

Prérequis : Installer Joi ---> npm installer Joi

const Joi = require('joi');

const eventModel = Joi.object({
    name: Joi.string().required(),
    email: email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } }),
    mobileNumber: Joi.string().optional()
})
Copier après la connexion

Utilisez le modèle de demande pour valider votre événement

Après avoir créé le modèle, nous devrons ensuite valider les données du corps de l'événement avec le modèle ; cette étape garantit également que l'erreur est correctement traitée.

const validateEventData = async (data) => {
    try{
        const value = await eventModel.validateAsync(data);
        return value;
    }catch(error){
        throw new Error( error.message || error);
    }
}

Copier après la connexion

Branchez le modèle à votre méthode de gestionnaire

module.exports.handler = async (event, context) => {
  try{
    const body = validateEventData(event.body);
    return { statusCode: "200", body };
    }
  }catch (err) {
    return {
        statusCode: 400,
        body: { message: 'Invalid request body', error: err.message || err },
    };
  }
}
Copier après la connexion

Exemple d'erreur

Disons que nous envoyons un objet d'événement de non-concordance comme :

{
    "email": "value3@gmail.com"
    "mobileNumber": "234567890"
}
Copier après la connexion

Notez que nous avons retiré un nom de champ obligatoire.

  "statusCode": 400,
  "body": { "message": "Invalid request body", "error": "\"name\" is required"
  }
Copier après la connexion

Voici une version remaniée et étendue de votre section de conclusion pour fournir plus de profondeur et renforcer les principaux points à retenir :


Conclusion

La validation correcte des requêtes entrantes est une étape essentielle pour protéger vos fonctions AWS Lambda contre les vulnérabilités potentielles telles que l'injection SQL, l'injection de script et d'autres formes d'entrées malveillantes. En mettant en œuvre des pratiques de validation robustes, vous pouvez garantir que votre application reste sécurisée, fiable et résiliente.

Dans cet article, nous avons montré comment utiliser la bibliothèque Joi pour effectuer la validation des requêtes dans les fonctions AWS Lambda. Avec Joi, vous pouvez définir des schémas de validation clairs, garantir l'intégrité des données et fournir des messages d'erreur informatifs aux utilisateurs lorsque les entrées ne répondent pas à vos exigences. Cette approche renforce non seulement votre application contre les menaces de sécurité, mais améliore également la maintenabilité en gardant votre logique de validation structurée et réutilisable.

En suivant les étapes décrites, vous pouvez intégrer de manière transparente la validation des entrées dans vos fonctions Lambda et gérer les erreurs de validation avec élégance. En conséquence, vos applications sans serveur peuvent fonctionner de manière plus sécurisée, vous garantissant que seules des données valides et bien formées sont traitées.

N'oubliez pas que la validation n'est qu'un niveau d'une stratégie de sécurité globale. L'associer à des pratiques telles qu'une journalisation appropriée des erreurs, une vérification des entrées et des mécanismes d'authentification (comme AWS Cognito) renforcera encore la sécurité de votre application.

Des pratiques de codage sécurisées comme celles-ci sont essentielles pour créer des architectures sans serveur robustes. Commencez dès aujourd'hui à mettre en œuvre la validation des entrées pour protéger vos points de terminaison AWS Lambda et offrir une expérience plus sûre à vos utilisateurs.

——————————————

Pour plus d'articles, suivez mes identifiants sociaux :

  • LinkedIn
  • Twitter
  • Dév
  • Moyen

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal