在 Lambda 函数代码中访问租户标识符
如果您的 Lambda 函数启用了租户隔离,则用于调用函数的租户标识符将在传递给函数处理程序的上下文对象中可用。您可以使用此标识符来实施租户特定的逻辑、监控和调试功能。
访问租户标识符
租户标识符可通过上下文对象的 tenantId 属性获取。请注意,此属性在调用阶段可用,在初始化阶段不可用。
常见的使用模式
以下是在函数代码中使用租户标识符的常见方法:
租户特定的配置
使用租户 ID 来加载租户特定的配置或设置:
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)
租户特定的数据访问
使用租户 ID 来确保数据隔离和访问控制:
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)
监控和调试
当您启用 JSON 日志记录时,租户标识符会自动包含在 Lambda 日志中,这样可以更轻松地监控和调试租户特定的问题。您也可以将租户 ID 用于自定义指标和跟踪。
例 带有租户 ID 的自定义指标
以下示例演示如何使用租户 ID 来创建租户特定的 CloudWatch 指标,以便根据租户情况监测使用模式和性能:
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)