Lors de la création d'applications sans serveur sur AWS, AWS Lambda est souvent la solution incontournable pour exécuter du code sans provisionner ni gérer de serveurs. Traditionnellement, AWS API Gateway est utilisée pour exposer les fonctions Lambda en tant qu'API RESTful. Cependant, AWS a introduit les URL de fonction Lambda, un moyen plus simple d'appeler des fonctions Lambda via HTTPS sans avoir à configurer une passerelle API. Dans cet article, nous découvrirons comment utiliser les URL des fonctions Lambda pour gérer différentes méthodes HTTP (GET, POST, PUT et DELETE) tout en intégrant l'authentification de sécurité.
Les URL de fonction Lambda fournissent un point de terminaison HTTP(S) dédié pour votre fonction Lambda. Cette fonctionnalité est particulièrement utile pour les microservices à fonction unique, les API légères ou lorsque vous devez exposer une fonction Lambda au public avec une configuration minimale.
Tout d'abord, créons une fonction Lambda et configurons son URL. Vous pouvez le faire via AWS Management Console, AWS CLI ou des outils Infrastructure as Code (IaC) comme AWS CloudFormation ou Terraform.
Créer une fonction Lambda :
Créer une URL de fonction :
Sécurisez l'URL de votre fonction :
Les fonctions Lambda déclenchées par les URL de fonction peuvent gérer plusieurs méthodes HTTP (GET, POST, PUT et DELETE) au sein d'une seule fonction. Voici un exemple simple de la façon de mettre en œuvre cela :
import json def lambda_handler(event, context): # Determine the HTTP method http_method = event['httpMethod'] if http_method == 'GET': return handle_get(event) elif http_method == 'POST': return handle_post(event) elif http_method == 'PUT': return handle_put(event) elif http_method == 'DELETE': return handle_delete(event) else: return { 'statusCode': 405, 'body': json.dumps({'message': 'Method Not Allowed'}) } def handle_get(event): # Handle GET request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'GET request received'}) } def handle_post(event): # Handle POST request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'POST request received'}) } def handle_put(event): # Handle PUT request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'PUT request received'}) } def handle_delete(event): # Handle DELETE request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'DELETE request received'}) }
Si vous avez choisi d'utiliser AWS_IAM pour sécuriser l'URL de votre fonction, les clients devront signer les demandes à l'aide d'AWS SigV4 (Signature Version 4). Voici un bref aperçu de la façon de faire des demandes authentifiées :
Par exemple, avec l'AWS CLI :
aws lambda invoke-url https://<your-function-url-id>.lambda-url.<region>.on.aws/<your-path> \ --http-method POST \ --body '{ "key": "value" }' \ --region <region> \ --profile <aws-profile>
Les URL des fonctions AWS Lambda offrent un moyen simplifié d'exposer les fonctions Lambda via HTTP sans avoir besoin d'une passerelle API. En gérant différentes méthodes HTTP (GET, POST, PUT, DELETE) au sein de la fonction Lambda et en sécurisant l'accès avec AWS IAM, vous pouvez créer rapidement des API légères et sécurisées. Que vous développiez un simple microservice ou une application plus complexe, les URL de fonction Lambda sont un ajout puissant à votre boîte à outils AWS.
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!