in

Desarrollo optimizado de aplicaciones multiinquilino con modo de aislamiento de inquilinos en AWS Lambda | Servicios web de Amazon

Las aplicaciones multiinquilino a menudo requieren un aislamiento estricto al procesar códigos o datos específicos del inquilino. Los ejemplos incluyen plataformas de software como servicio (SaaS) para la automatización del flujo de trabajo o la ejecución de código donde los clientes deben asegurarse de que los entornos de ejecución utilizados para inquilinos individuales o usuarios finales permanezcan completamente separados entre sí. Tradicionalmente, los desarrolladores han abordado estos requisitos implementando funciones Lambda separadas para cada inquilino o implementando una lógica de aislamiento personalizada dentro de funciones compartidas que aumentaban la complejidad arquitectónica y operativa.

Hoy, AWS Lambda presenta un nuevo modo de aislamiento de inquilinos que amplía las capacidades de aislamiento existentes en Lambda. Lambda ya proporciona aislamiento a nivel de función y este nuevo modo extiende el aislamiento al nivel de inquilino individual o usuario final dentro de una sola función. Esta capacidad integrada procesa las invocaciones de funciones en entornos de ejecución separados para cada inquilino, lo que le permite cumplir con estrictos requisitos de aislamiento sin esfuerzo de implementación adicional para administrar recursos específicos del inquilino dentro del código de función.

A continuación se explica cómo habilitar el modo de aislamiento de inquilinos en la consola de AWS Lambda:

Cuando se utiliza la nueva capacidad de aislamiento de inquilinos, Lambda asocia entornos de ejecución de funciones con identificadores de inquilinos especificados por el cliente. Esto significa que los entornos de ejecución para un inquilino en particular no se utilizan para atender solicitudes de invocación de otros inquilinos que invocan la misma función Lambda.

La función aborda estrictos requisitos de seguridad para los proveedores de SaaS que procesan datos confidenciales o ejecutan código de inquilino que no es de confianza. Mantiene las características de rendimiento y pago por uso de AWS Lambda al mismo tiempo que obtiene aislamiento del entorno de ejecución. Además, este enfoque ofrece los beneficios de seguridad de la infraestructura por inquilino sin la sobrecarga operativa de administrar funciones Lambda dedicadas para inquilinos individuales, que pueden crecer rápidamente a medida que los clientes adoptan su aplicación.

Introducción al aislamiento de inquilinos de AWS Lambda
Permítame explicarle cómo configurar y utilizar el aislamiento de inquilinos para una aplicación multiinquilino.

Primero, sobre el Crear función página en la consola de AWS Lambda, elijo Autor desde cero opción.

Entonces, bajo Configuraciones adicionalesselecciono Permitir bajo Modo de aislamiento de inquilinos. Tenga en cuenta que el modo de aislamiento de inquilinos solo se puede configurar durante la creación de funciones y no se puede modificar para funciones Lambda existentes.

A continuación, escribo código Python para demostrar esta capacidad. Puedo acceder al identificador de inquilino en mi código de función a través del objeto de contexto. Aquí está el código Python completo:

import json
import os
from datetime import datetime

def lambda_handler(event, context):
    tenant_id = context.tenant_id
    file_path="/tmp/tenant_data.json"

    # Read existing data or initialize
    if os.path.exists(file_path):
        with open(file_path, 'r') as f:
            data = json.load(f)
    else:
        data = {
            'tenant_id': tenant_id,
            'request_count': 0,
            'first_request': datetime.utcnow().isoformat(),
            'requests': []
        }

    # Increment counter and add request info
    data['request_count'] += 1
    data['requests'].append({
        'request_number': data['request_count'],
        'timestamp': datetime.utcnow().isoformat()
    })

    # Write updated data back to file
    with open(file_path, 'w') as f:
        json.dump(data, f, indent=2)

    # Return file contents to show isolation
    return {
        'statusCode': 200,
        'body': json.dumps({
            'message': f'File contents for {tenant_id} (isolated per tenant)',
            'file_data': data
        })
    }

Cuando termine, elijo Desplegar. Ahora, necesito probar esta capacidad eligiendo Prueba. puedo ver en el Crear nuevo evento de prueba panel que hay una nueva configuración llamada ID de inquilino.

Si intento invocar esta función sin un ID de inquilino, obtendré el siguiente error «Agregue un ID de inquilino válido en su solicitud y vuelva a intentarlo».

Déjame intentar probar esta función con un ID de inquilino llamado tenant-A.

Puedo ver que la función se ejecutó correctamente y regresó. request_count: 1. Invocaré esta función nuevamente para obtener request_count: 2.

Ahora, déjame intentar probar esta función con un ID de inquilino llamado tenant-B.

La última invocación regresó. request_count: 1 porque nunca invoqué esta función con tenant-B. Las invocaciones de cada inquilino utilizarán entornos de ejecución separados, aislando los datos almacenados en caché, las variables globales y cualquier archivo almacenado en /tmp.

Esta capacidad transforma la forma en que abordo la arquitectura sin servidor multiinquilino. En lugar de luchar con patrones de aislamiento complejos o administrar cientos de funciones Lambda específicas de los inquilinos, dejé que AWS Lambda manejara automáticamente el aislamiento. Esto mantiene los datos de los inquilinos aislados entre inquilinos, lo que me da confianza en la seguridad y la separación de mi aplicación multiinquilino.

Cosas adicionales que debes saber
Aquí hay una lista de cosas adicionales que necesita saber:

  • Actuación – Las invocaciones del mismo inquilino aún pueden beneficiarse de la reutilización del entorno de ejecución cálida para un rendimiento óptimo.
  • Precios – Se le cobra cuando Lambda crea un nuevo entorno de ejecución consciente del inquilino, y el precio depende de la cantidad de memoria que asigna a su función y la arquitectura de CPU que utiliza. Para obtener más detalles, consulte los precios de AWS Lambda.
  • Disponibilidad – Disponible ahora en todas las regiones comerciales de AWS excepto Asia Pacífico (Nueva Zelanda), AWS GovCloud (EE. UU.) y China.

Este lanzamiento simplifica la creación de aplicaciones multiinquilino en AWS Lambda, como plataformas SaaS para la automatización del flujo de trabajo o la ejecución de código. Obtenga más información sobre cómo configurar el aislamiento de inquilinos para su próxima función Lambda multiinquilino en la Guía para desarrolladores de AWS Lambda.

¡Feliz edificio!
donnie

Fuente

30 accesorios Cosmic Orange para acompañar tu iPhone 17 Pro en la estratosfera

El final de Black Ops 7 pronto será jugable para todos de inmediato

El final de Black Ops 7 pronto será jugable para todos de inmediato