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:
Erstellen Sie eine Funktions-URL:
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 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'}) }
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:
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>
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!