„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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

Veröffentlicht am 24.08.2024
Durchsuche:602

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. Funktions-URL erstellen:

    • 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 Implementierung:

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 ein kurzer Überblick darüber, wie authentifizierte Anfragen gestellt werden:

  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. Rufen Sie die Funktions-URL auf: 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://.lambda-url..on.aws/ \
--http-method POST \
--body '{ "key": "value" }' \
--region  \
--profile 

Abschluss

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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: 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 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3