Accesso all'identificatore del tenant nel codice della funzione Lambda - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Accesso all'identificatore del tenant nel codice della funzione Lambda

Quando la funzione Lambda ha l'isolamento del tenant abilitato, l'identificatore tenant utilizzato per richiamare la funzione viene reso disponibile all'interno dell'oggetto context passato al gestore della funzione. È possibile utilizzare questo identificatore per implementare funzionalità di logica, monitoraggio e debug specifiche del tenant.

Accesso all'identificatore del tenant

L'identificatore del tenant è disponibile tramite la tenantId proprietà dell'oggetto context. Si noti che questa proprietà è disponibile durante la fase di invocazione, non durante la fase di inizializzazione.

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

Modelli di utilizzo comuni

Ecco alcuni modi comuni per utilizzare l'identificatore tenant nel codice della funzione:

Configurazione specifica per il tenant

Usa l'ID tenant per caricare configurazioni o impostazioni specifiche del tenant:

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)

Accesso ai dati specifico del tenant

Utilizza l'ID del tenant per garantire l'isolamento dei dati e il controllo degli accessi:

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)

Monitoraggio e debug

L'identificatore del tenant viene incluso automaticamente nei log Lambda quando è abilitata la registrazione JSON, semplificando il monitoraggio e il debug dei problemi specifici del tenant. Puoi anche utilizzare l'ID tenant per metriche e tracciamento personalizzati.

Esempio Metriche personalizzate con ID tenant

L'esempio seguente mostra come utilizzare l'ID tenant per creare CloudWatch metriche specifiche per il tenant per monitorare i modelli di utilizzo e le prestazioni per tenant:

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)