

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengakses pengenal penyewa dalam kode fungsi Lambda
<a name="tenant-isolation-context"></a>

Ketika fungsi Lambda Anda mengaktifkan isolasi penyewa, pengenal penyewa yang digunakan untuk memanggil fungsi Anda tersedia dalam objek konteks yang diteruskan ke penangan fungsi Anda. Anda dapat menggunakan pengenal ini untuk mengimplementasikan logika, pemantauan, dan kemampuan debugging khusus penyewa.

**Topics**
+ [Mengakses pengenal penyewa](#tenant-isolation-context-access)
+ [Pola penggunaan umum](#tenant-isolation-context-patterns)
+ [Pemantauan dan debugging](#tenant-isolation-context-monitoring)

## Mengakses pengenal penyewa
<a name="tenant-isolation-context-access"></a>

Pengenal penyewa tersedia melalui `tenantId` properti objek konteks. Perhatikan bahwa properti ini tersedia selama [fase pemanggilan, bukan selama fase](lambda-runtime-environment.md#runtimes-lifecycle-invoke) [inisialisasi](lambda-runtime-environment.md#runtimes-lifecycle-ib).

------
#### [ 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);
        }
    }
}
```

------

## Pola penggunaan umum
<a name="tenant-isolation-context-patterns"></a>

Berikut adalah cara umum untuk menggunakan pengenal penyewa dalam kode fungsi Anda:

**Konfigurasi khusus penyewa**

Gunakan ID penyewa untuk memuat konfigurasi atau pengaturan khusus penyewa:

```
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)
```

**Akses data khusus penyewa**

Gunakan ID penyewa untuk memastikan isolasi data dan kontrol akses:

```
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)
```

## Pemantauan dan debugging
<a name="tenant-isolation-context-monitoring"></a>

Pengenal penyewa secara otomatis disertakan dalam log Lambda saat Anda [mengaktifkan logging JSON](monitoring-cloudwatchlogs-logformat.md), sehingga memudahkan untuk memantau dan men-debug masalah khusus penyewa. Anda juga dapat menggunakan ID penyewa untuk metrik dan penelusuran khusus.

**Example Metrik kustom dengan ID penyewa**  
Contoh berikut menunjukkan cara menggunakan ID penyewa untuk membuat CloudWatch metrik khusus penyewa untuk memantau pola penggunaan dan kinerja oleh penyewa:  

```
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)
```