Al crear aplicaciones sin servidor en AWS, AWS Lambda suele ser la solución ideal para ejecutar código sin aprovisionar ni administrar servidores. Tradicionalmente, AWS API Gateway se ha utilizado para exponer funciones Lambda como API RESTful. Sin embargo, AWS introdujo las URL de funciones Lambda, una forma más sencilla de invocar funciones Lambda a través de HTTPS sin la sobrecarga de configurar una puerta de enlace API. En esta publicación, exploraremos cómo usar las URL de la función Lambda para manejar diferentes métodos HTTP (GET, POST, PUT y DELETE) al mismo tiempo que incorporamos autenticación de seguridad.
Las URL de la función Lambda proporcionan un punto final HTTP(S) dedicado para su función Lambda. Esta característica es particularmente útil para microservicios de función única, API livianas o cuando necesita exponer una función Lambda al público con una configuración mínima.
Primero, creemos una función Lambda y configuremos su URL. Puede hacerlo a través de la consola de administración de AWS, la CLI de AWS o herramientas de infraestructura como código (IaC) como AWS CloudFormation o Terraform.
Crear una función Lambda:
Crear una URL de función:
Asegure la URL de su función:
Las funciones Lambda activadas por las URL de función pueden manejar múltiples métodos HTTP (GET, POST, PUT y DELETE) dentro de una sola función. A continuación se muestra un ejemplo sencillo de cómo implementar esto:
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'}) }
Si optó por utilizar AWS_IAM para proteger la URL de su función, los clientes deberán firmar solicitudes utilizando AWS SigV4 (Signature Versión 4). A continuación se ofrece una breve descripción general de cómo realizar solicitudes autenticadas:
Por ejemplo, con AWS CLI:
aws lambda invoke-url https://.lambda-url. .on.aws/ \ --http-method POST \ --body '{ "key": "value" }' \ --region \ --profile
Las URL de funciones Lambda de AWS ofrecen una forma simplificada de exponer funciones Lambda a través de HTTP sin la necesidad de una puerta de enlace API. Al manejar diferentes métodos HTTP (GET, POST, PUT, DELETE) dentro de la función Lambda y asegurar el acceso con AWS IAM, puede crear API ligeras y seguras rápidamente. Ya sea que esté desarrollando un microservicio simple o una aplicación más compleja, las URL de funciones Lambda son una poderosa adición a su kit de herramientas de AWS.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3