"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Simplificación del acceso a la API con las URL de las funciones AWS Lambda: manejo de GET, POST, PUT y DELETE con seguridad integrada

Simplificación del acceso a la API con las URL de las funciones AWS Lambda: manejo de GET, POST, PUT y DELETE con seguridad integrada

Publicado el 2024-08-24
Navegar:454

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

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.

¿Qué son las URL de funciones Lambda?

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.

Configuración de una URL de función Lambda

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.

  1. Crear una función Lambda:

    • Vaya a la consola de AWS Lambda.
    • Haga clic en "Crear función".
    • Elige la opción "Crear desde cero".
    • Defina el nombre de su función, el tiempo de ejecución y la función de ejecución.
    • Escriba su código de función o cargue un paquete de implementación.
  2. Crear una URL de función:

    • En la configuración de tu función, selecciona la pestaña "URL de función".
    • Haga clic en “Crear URL de función”.
    • Elija el tipo de autorización (por ejemplo, AWS_IAM para acceso autenticado o NINGUNO para acceso público).
    • Haga clic en "Crear URL de función".
  3. Asegure la URL de su función:

    • Puede utilizar AWS IAM para la autenticación seleccionando AWS_IAM como tipo de autorización.
    • Cree roles o políticas de IAM para controlar qué usuarios o servicios pueden invocar la función a través de la URL.
    • Opcionalmente, puedes implementar una lógica de autorización personalizada dentro de la propia función para restringir aún más el acceso.

Manejo de diferentes métodos HTTP

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

Ejemplo de cómo proteger la URL de la función con autenticación IAM

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:

  1. Cree un usuario/rol de IAM con los permisos adecuados para invocar la función Lambda.
  2. Firme la solicitud: use AWS SDK, CLI o herramientas como Postman (con autenticación AWS IAM) para firmar las solicitudes HTTP.
  3. Invocar la URL de la función: asegúrese de que la solicitud firmada contenga credenciales válidas; de lo contrario, la solicitud será rechazada.

Por ejemplo, con AWS CLI:

aws lambda invoke-url https://.lambda-url..on.aws/ \
--http-method POST \
--body '{ "key": "value" }' \
--region  \
--profile 

Conclusión

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.

Declaración de liberación Este artículo se reproduce en: https://dev.to/sunil_yaduvanshi/simplifiing-api-acess-with-aws-lambda-function-urls-handling-get-put-put-delete-with-burrilt-in-security-4665?
Último tutorial Más>

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