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.
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).
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.
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.
Déploiement rapide : idéal pour le prototypage rapide ou les cas d'utilisation où la configuration d'API Gateway est inutile.
Support HTTPS natif : fournit une communication sécurisée sans configuration supplémentaire.
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.
Microservices et Webhooks :
Prototypage et démos :
Automatisation et outils internes :
Backends de sites Web statiques :
Intégrations IoT :
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() })
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); } }
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 }, }; } }
Disons que nous envoyons un objet d'événement de non-concordance comme :
{ "email": "value3@gmail.com" "mobileNumber": "234567890" }
Notez que nous avons retiré un nom de champ obligatoire.
"statusCode": 400, "body": { "message": "Invalid request body", "error": "\"name\" is required" }
Voici une version remaniée et étendue de votre section de conclusion pour fournir plus de profondeur et renforcer les principaux points à retenir :
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 :
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!