Heim >Backend-Entwicklung >Python-Tutorial >Vereinfachen des API-Zugriffs mit AWS Lambda-Funktions-URLs: Handhabung von GET, POST, PUT und DELETE mit integrierter Sicherheit

Vereinfachen des API-Zugriffs mit AWS Lambda-Funktions-URLs: Handhabung von GET, POST, PUT und DELETE mit integrierter Sicherheit

WBOY
WBOYOriginal
2024-08-11 12:51:31911Durchsuche

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

Beim Erstellen serverloser Anwendungen auf AWS ist AWS Lambda oft die Lösung der Wahl, um Code auszuführen, ohne Server bereitzustellen oder zu verwalten. Traditionell wurde AWS API Gateway verwendet, um Lambda-Funktionen als RESTful-APIs bereitzustellen. Allerdings führte AWS Lambda-Funktions-URLs ein, eine einfachere Möglichkeit, Lambda-Funktionen über HTTPS aufzurufen, ohne den Aufwand für die Konfiguration eines API-Gateways. In diesem Beitrag untersuchen wir, wie Sie Lambda-Funktions-URLs verwenden, um verschiedene HTTP-Methoden – GET, POST, PUT und DELETE – zu verarbeiten und gleichzeitig die Sicherheitsauthentifizierung zu integrieren.

Was sind Lambda-Funktions-URLs?

Lambda-Funktions-URLs bieten einen dedizierten HTTP(S)-Endpunkt für Ihre Lambda-Funktion. Diese Funktion ist besonders nützlich für Einzelfunktions-Microservices, einfache APIs oder wenn Sie eine Lambda-Funktion mit minimalem Setup der Öffentlichkeit zugänglich machen müssen.

Einrichten einer Lambda-Funktions-URL

Erstellen wir zunächst eine Lambda-Funktion und konfigurieren deren URL. Sie können dies über die AWS-Managementkonsole, AWS CLI oder Infrastructure as Code (IaC)-Tools wie AWS CloudFormation oder Terraform tun.

  1. Erstellen Sie eine Lambda-Funktion:

    • Gehen Sie zur AWS Lambda-Konsole.
    • Klicken Sie auf „Funktion erstellen.“
    • Wählen Sie die Option „Autor von Grund auf neu“.
    • Definieren Sie Ihren Funktionsnamen, Ihre Laufzeit und Ihre Ausführungsrolle.
    • Schreiben Sie Ihren Funktionscode oder laden Sie ein Bereitstellungspaket hoch.
  2. Erstellen Sie eine Funktions-URL:

    • Wählen Sie unter der Konfiguration Ihrer Funktion die Registerkarte „Funktions-URL“ aus.
    • Klicken Sie auf „Funktions-URL erstellen.“
    • Wählen Sie den Autorisierungstyp (z. B. AWS_IAM für authentifizierten Zugriff oder NONE für öffentlichen Zugriff).
    • Klicken Sie auf „Funktions-URL erstellen“.
  3. Sichern Sie Ihre Funktions-URL:

    • Sie können AWS IAM zur Authentifizierung verwenden, indem Sie AWS_IAM als Autorisierungstyp auswählen.
    • Erstellen Sie IAM-Rollen oder -Richtlinien, um zu steuern, welche Benutzer oder Dienste die Funktion über die URL aufrufen können.
    • Optional können Sie eine benutzerdefinierte Autorisierungslogik innerhalb der Funktion selbst implementieren, um den Zugriff weiter einzuschränken.

Umgang mit verschiedenen HTTP-Methoden

Lambda-Funktionen, die durch Funktions-URLs ausgelöst werden, können mehrere HTTP-Methoden – GET, POST, PUT und DELETE – innerhalb einer einzigen Funktion verarbeiten. Hier ist ein einfaches Beispiel für die Umsetzung:

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

Beispiel für die Sicherung der Funktions-URL mit IAM-Authentifizierung

Wenn Sie sich für die Verwendung von AWS_IAM zum Sichern Ihrer Funktions-URL entschieden haben, müssen Clients Anfragen mit AWS SigV4 (Signaturversion 4) signieren. Hier ist eine kurze Übersicht darüber, wie Sie authentifizierte Anfragen stellen:

  1. Erstellen Sie einen IAM-Benutzer/eine IAM-Rolle mit den entsprechenden Berechtigungen zum Aufrufen der Lambda-Funktion.
  2. Anfrage signieren: Verwenden Sie AWS SDKs, CLI oder Tools wie Postman (mit AWS IAM-Authentifizierung), um die HTTP-Anfragen zu signieren.
  3. Funktions-URL aufrufen: Stellen Sie sicher, dass die signierte Anfrage gültige Anmeldeinformationen enthält; andernfalls wird die Anfrage abgelehnt.

Zum Beispiel mit der 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>

Fazit

AWS Lambda-Funktions-URLs bieten eine optimierte Möglichkeit, Lambda-Funktionen über HTTP verfügbar zu machen, ohne dass ein API-Gateway erforderlich ist. Durch die Handhabung verschiedener HTTP-Methoden (GET, POST, PUT, DELETE) innerhalb der Lambda-Funktion und die Sicherung des Zugriffs mit AWS IAM können Sie schnell schlanke, sichere APIs erstellen. Unabhängig davon, ob Sie einen einfachen Microservice oder eine komplexere Anwendung entwickeln, sind Lambda-Funktions-URLs eine leistungsstarke Ergänzung zu Ihrem AWS-Toolkit.

Das obige ist der detaillierte Inhalt vonVereinfachen des API-Zugriffs mit AWS Lambda-Funktions-URLs: Handhabung von GET, POST, PUT und DELETE mit integrierter Sicherheit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn