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)