

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
<a name="tenant-isolation-invoke"></a>

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
<a name="tenant-isolation-invoke-cli"></a>

**Invocazione sincrona**

[Per le chiamate sincrone, aggiungi il parametro al tuo comando Invoke: `--tenant-id`](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)

```
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)
<a name="tenant-isolation-invoke-api"></a>

Quando utilizzi direttamente l'azione [Invoke](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) 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)
<a name="tenant-isolation-invoke-apigateway"></a>

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-Id`intestazione prevista da Lambda. API Gateway utilizza l'azione [Invoke](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) API di Lambda, che richiede il passaggio dell'ID tenant tramite l'`X-Amz-Tenant-Id`intestazione 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-Id`intestazione. L'esempio seguente mostra una richiesta client con un'`x-tenant-id`intestazione:

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

1. 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-Id`intestazione:

```
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)
<a name="tenant-isolation-invoke-sdk"></a>

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

------