Richiamo di funzioni Lambda con isolamento del tenant - 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à.

Richiamo di funzioni Lambda con isolamento del tenant

Quando si richiama una funzione con l'isolamento del tenant abilitato, è necessario fornire un parametro. tenant-id Questo parametro garantisce che la chiamata della funzione venga elaborata in un ambiente di esecuzione dedicato a quel tenant specifico.

Richiamo di funzioni con tenant isolation ()AWS CLI

Invocazione sincrona

Per le chiamate sincrone, aggiungi il parametro al tuo comando Invoke: --tenant-id

aws lambda invoke \ --function-name image-analysis \ --tenant-id blue \ response.json

Invocazione asincrona

Per le chiamate asincrone, includi entrambi i parametri e: --tenant-id --invocation-type Event

aws lambda invoke \ --function-name image-analysis \ --tenant-id blue \ --invocation-type Event \ response.json

Richiamo di funzioni con isolamento dei tenant (API)

Quando utilizzi direttamente l'azione Invoke API, includi l'identificatore del tenant utilizzando il X-Amzn-Tenant-Id parametro nella richiesta.

Esempio di richiesta API

POST /2015-03-31/functions/image-analysis/invocations HTTP/1.1 Host: lambda.us-east-1.amazonaws.com Content-Type: application/json Authorization: AWS4-HMAC-SHA256 Credential=... X-Amz-Tenant-Id: blue { "key1": "value1", "key2": "value2" }

Richiamo di funzioni con isolamento del tenant (API Gateway)

Quando si utilizza API Gateway REST APIs per attivare funzioni Lambda isolate dal tenant, è necessario configurare API Gateway per mappare le proprietà della richiesta del client all'X-Amz-Tenant-Idintestazione prevista da Lambda. API Gateway utilizza l'azione Invoke API di Lambda, che richiede il passaggio dell'ID tenant tramite l'X-Amz-Tenant-Idintestazione HTTP. Puoi configurare API Gateway per iniettare questa intestazione HTTP nella richiesta di chiamata Lambda con un valore ottenuto dalle proprietà della richiesta del client come intestazioni HTTP, parametri di query o parametri di percorso. È necessario mappare la proprietà della richiesta del client prima di poter sovrascrivere l'intestazione. X-Amz-Tenant-Id

Nota

Non è possibile utilizzare HTTP APIs per richiamare funzioni Lambda isolate dal tenant perché non è possibile sovrascrivere l'intestazione. X-Amz-Tenant-Id

Utilizzo delle intestazioni di richiesta

Configura l'integrazione con API Gateway per mappare un'intestazione personalizzata dalla richiesta del client all'X-Amz-Tenant-Idintestazione. L'esempio seguente mostra una richiesta client con un'x-tenant-idintestazione:

POST /api/process HTTP/1.1 Host: your-api-id.execute-api.us-east-1.amazonaws.com Content-Type: application/json x-tenant-id: blue { "data": "sample payload" }

Nella configurazione del metodo API Gateway, è necessario:

  1. Abilitare il parametro di intestazione della richiesta del client (ad esempio,method.request.header.x-tenant-id)

  2. Mappare l'intestazione del client all'intestazione di integrazione Lambda utilizzando integration.request.header.X-Amz-Tenant-Id

Utilizzo dei parametri di interrogazione

Allo stesso modo, puoi mappare i parametri della query all'X-Amz-Tenant-Idintestazione:

GET /api/process?tenant-id=blue&data=sample HTTP/1.1 Host: your-api-id.execute-api.us-east-1.amazonaws.com

Configura il metodo per abilitare il parametro di query e mapparlo all'intestazione di integrazione.

Richiamo di funzioni con isolamento dei tenant (SDK)

Quando si utilizza AWS SDKs per richiamare funzioni isolate dal tenant, includi l'identificatore del tenant nella richiesta di invocazione.

Python
import boto3 import json lambda_client = boto3.client('lambda') response = lambda_client.invoke( FunctionName='image-analysis', TenantId='blue', Payload=json.dumps({ 'key1': 'value1', 'key2': 'value2' }) ) result = json.loads(response['Payload'].read())
Node.js
const AWS = require('aws-sdk'); const lambda = new AWS.Lambda(); const params = { FunctionName: 'image-analysis', TenantId: 'blue', Payload: JSON.stringify({ key1: 'value1', key2: 'value2' }) }; lambda.invoke(params, (err, data) => { if (err) { console.error(err); } else { const result = JSON.parse(data.Payload); console.log(result); } });
Java
import software.amazon.awssdk.services.lambda.LambdaClient; import software.amazon.awssdk.services.lambda.model.InvokeRequest; import software.amazon.awssdk.services.lambda.model.InvokeResponse; import software.amazon.awssdk.core.SdkBytes; public class TenantIsolationExample { public static void main(String[] args) { LambdaClient lambdaClient = LambdaClient.create(); String payload = "{\"key1\": \"value1\", \"key2\": \"value2\"}"; InvokeRequest request = InvokeRequest.builder() .functionName("image-analysis") .tenantId("blue") .payload(SdkBytes.fromUtf8String(payload)) .build(); InvokeResponse response = lambdaClient.invoke(request); } }