"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Simplification de l'accès aux API avec les URL des fonctions AWS Lambda : gestion de GET, POST, PUT et DELETE avec la sécurité intégrée

Simplification de l'accès aux API avec les URL des fonctions AWS Lambda : gestion de GET, POST, PUT et DELETE avec la sécurité intégrée

Publié le 2024-08-24
Parcourir:804

Simplifying API Access with AWS Lambda Function URLs: Handling GET, POST, PUT, and DELETE with Built-in Security

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é.

Que sont les URL de fonctions Lambda ?

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.

Configuration d'une URL de fonction Lambda

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.

  1. Créer une fonction Lambda :

    • Accédez à la console AWS Lambda.
    • Cliquez sur "Créer une fonction".
    • Choisissez l'option "Auteur à partir de zéro".
    • Définissez le nom de votre fonction, le temps d'exécution et le rôle d'exécution.
    • Écrivez votre code de fonction ou téléchargez un package de déploiement.
  2. Créer une URL de fonction :

    • Sous la configuration de votre fonction, sélectionnez l'onglet « URL de fonction ».
    • Cliquez sur « Créer une URL de fonction ».
    • Choisissez le type d'autorisation (par exemple, AWS_IAM pour un accès authentifié ou NONE pour un accès public).
    • Cliquez sur « Créer une URL de fonction ».
  3. Sécuriser l'URL de votre fonction :

    • Vous pouvez utiliser AWS IAM pour l'authentification en sélectionnant AWS_IAM comme type d'autorisation.
    • Créez des rôles ou des stratégies IAM pour contrôler quels utilisateurs ou services peuvent appeler la fonction via l'URL.
    • Facultativement, vous pouvez implémenter une logique d'autorisation personnalisée au sein de la fonction elle-même pour restreindre davantage l'accès.

Gestion de différentes méthodes HTTP

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 ceci :

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'})
    }

Exemple de sécurisation de l'URL de fonction avec l'authentification IAM

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 :

  1. Créez un utilisateur/rôle IAM avec les autorisations appropriées pour appeler la fonction Lambda.
  2. Signez la demande : utilisez les kits SDK AWS, la CLI ou des outils tels que Postman (avec authentification AWS IAM) pour signer les requêtes HTTP.
  3. Invoquez l'URL de la fonction : assurez-vous que la demande signée contient des informations d'identification valides ; sinon, la demande sera refusée.

Par exemple, avec l'AWS CLI :

aws lambda invoke-url https://.lambda-url..on.aws/ \
--http-method POST \
--body '{ "key": "value" }' \
--region  \
--profile 

Conclusion

Les URL de 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 des fonctions Lambda constituent un ajout puissant à votre boîte à outils AWS.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/sunil_yaduvanshi/simplifying-api-access-with-aws-lambda-function-urls-handling-get-post-put-and-delete-with-built-in- security- 4665?1 S'il y a une infraction, veuillez contacter [email protected] pour la supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3