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.
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.
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.
Erstellen Sie eine Lambda-Funktion:
Funktions-URL erstellen:
Sichern Sie Ihre Funktions-URL:
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'}) }
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:
Zum Beispiel mit der AWS CLI:
aws lambda invoke-url https://.lambda-url. .on.aws/ \ --http-method POST \ --body '{ "key": "value" }' \ --region \ --profile
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.
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