Acceso al identificador de inquilino en el código de la función de Lambda - AWS Lambda

Acceso al identificador de inquilino en el código de la función de Lambda

Cuando la función de Lambda tiene habilitado el aislamiento de inquilinos, el identificador de inquilino utilizado para invocar la función está disponible en el objeto de contexto que se pasa al controlador de funciones. Puede utilizar este identificador para implementar capacidades de lógica, supervisión y depuración específicas del inquilino.

Acceso al identificador de inquilino

El identificador de inquilino está disponible a través de la propiedad de tenantId del objeto de contexto. Tenga en cuenta que esta propiedad está disponible durante la fase de invocación, no durante la fase de inicialización.

Python
def lambda_handler(event, context): tenant_id = context.tenant_id print(f"Processing request for tenant: {tenant_id}") # Implement tenant-specific logic if tenant_id == "blue": return process_blue_tenant(event) elif tenant_id == "green": return process_green_tenant(event) else: return process_default_tenant(event)
Node.js
exports.handler = async (event, context) => { const tenantId = context.tenantId; console.log(`Processing request for tenant: ${tenantId}`); // Implement tenant-specific logic switch (tenantId) { case 'blue': return processBlueTenant(event); case 'green': return processGreenTenant(event); default: return processDefaultTenant(event); } };
Java
public class TenantHandler implements RequestHandler<Map<String, Object>, String> { @Override public String handleRequest(Map<String, Object> event, Context context) { String tenantId = context.getTenantId(); System.out.println("Processing request for tenant: " + tenantId); // Implement tenant-specific logic switch (tenantId) { case "blue": return processBlueTenant(event); case "green": return processGreenTenant(event); default: return processDefaultTenant(event); } } }

Patrones de uso comunes

Estas son las formas más comunes de utilizar el identificador de inquilino en el código de función:

Configuración específica del inquilino

Utilice el identificador de inquilino para cargar la configuración o los ajustes específicos del inquilino:

def lambda_handler(event, context): tenant_id = context.tenant_id # Load tenant-specific configuration config = load_tenant_config(tenant_id) database_url = config['database_url'] api_key = config['api_key'] # Process with tenant-specific settings return process_request(event, database_url, api_key)

Acceso a datos específicos del inquilino

Utilice el identificador de inquilino para garantizar el aislamiento de los datos y el control del acceso a estos:

import boto3 def lambda_handler(event, context): tenant_id = context.tenant_id # Ensure data access is scoped to the tenant dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('user_data') user_id = event.get('userId') response = table.get_item( Key={ 'tenant_id': tenant_id, 'user_id': user_id } ) return process_results(response.get('Item'), tenant_id)

Monitoreo y depuración

El identificador de inquilino se incluye automáticamente en los registros de Lambda cuando se habilita el registro de JSON, lo que facilita la supervisión y la depuración de problemas específicos del inquilino. También puede usar el identificador de inquilino para el seguimiento y las métricas personalizadas.

ejemplo Métricas personalizadas con el identificador de inquilino

En el siguiente ejemplo se muestra cómo utilizar el identificador de inquilino para crear métricas de CloudWatch específicas del inquilino con el fin de supervisar los patrones de uso y el rendimiento por inquilino:

import boto3 def lambda_handler(event, context): tenant_id = context.tenant_id cloudwatch = boto3.client('cloudwatch') # Record tenant-specific metrics cloudwatch.put_metric_data( Namespace='MyApp/TenantMetrics', MetricData=[ { 'MetricName': 'RequestCount', 'Dimensions': [ { 'Name': 'TenantId', 'Value': tenant_id } ], 'Value': 1, 'Unit': 'Count' } ] ) return process_request(event, tenant_id)