Aufrufen von Lambda-Funktionen mit Mandantenisolierung - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aufrufen von Lambda-Funktionen mit Mandantenisolierung

Wenn Sie eine Funktion aufrufen, für die die Mandantenisolierung aktiviert ist, müssen Sie einen Parameter angeben. tenant-id Dieser Parameter stellt sicher, dass Ihr Funktionsaufruf in einer Ausführungsumgebung verarbeitet wird, die diesem bestimmten Mandanten zugewiesen ist.

Aufrufen von Funktionen mit Tenant Isolation ()AWS CLI

Synchroner Aufruf

Fügen Sie für synchrone Aufrufe den --tenant-id Parameter zu Ihrem Invoke-Befehl hinzu:

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

Asynchroner Aufruf

Geben Sie bei asynchronen Aufrufen sowohl die als auch die Parameter an: --tenant-id --invocation-type Event

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

Funktionen mit Mandantenisolierung (API) aufrufen

Wenn Sie die Aktion „API aufrufen“ direkt verwenden, geben Sie die Mandanten-ID mithilfe des X-Amzn-Tenant-Id Parameters in Ihre Anfrage ein.

Beispiel für eine API-Anfrage

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" }

Aufrufen von Funktionen mit Mandantenisolierung (API Gateway)

Wenn Sie API Gateway REST verwenden APIs , um mandantenisolierte Lambda-Funktionen auszulösen, müssen Sie API Gateway so konfigurieren, dass die Eigenschaften der Client-Anfrage dem von Lambda erwarteten X-Amz-Tenant-Id Header zugeordnet werden. API Gateway verwendet die Aktion „API aufrufen“ von Lambda, bei der die Mandanten-ID über den X-Amz-Tenant-Id HTTP-Header übergeben werden muss. Sie können API Gateway so konfigurieren, dass dieser HTTP-Header mit einem Wert, der aus Eigenschaften der Client-Anfrage wie HTTP-Headern, Abfrageparametern oder Pfadparametern abgerufen wird, in die Lambda-Aufrufanforderung eingefügt wird. Sie müssen zuerst die Eigenschaft der Client-Anfrage zuordnen, bevor Sie den Header überschreiben können. X-Amz-Tenant-Id

Anmerkung

Sie können HTTP nicht verwenden APIs , um mandantenisolierte Lambda-Funktionen aufzurufen, da es nicht möglich ist, den Header zu überschreiben. X-Amz-Tenant-Id

Verwenden von Anforderungsheadern

Konfigurieren Sie Ihre API-Gateway-Integration so, dass ein benutzerdefinierter Header von der Client-Anfrage dem X-Amz-Tenant-Id Header zugeordnet wird. Das folgende Beispiel zeigt eine Client-Anfrage mit einem x-tenant-id Header:

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" }

In Ihrer API Gateway Gateway-Methodenkonfiguration müssen Sie:

  1. Aktivieren Sie den Header-Parameter für die Client-Anfrage (zum Beispielmethod.request.header.x-tenant-id)

  2. Ordnen Sie den Client-Header dem Lambda-Integrationsheader zu, indem Sie integration.request.header.X-Amz-Tenant-Id

Verwenden von Abfrageparametern

Auf ähnliche Weise können Sie dem X-Amz-Tenant-Id Header Abfrageparameter zuordnen:

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

Konfigurieren Sie die Methode so, dass der Abfrageparameter aktiviert wird, und ordnen Sie ihn dem Integrationsheader zu.

Funktionen mit Tenant Isolation (SDK) aufrufen

Wenn Sie Funktionen verwenden AWS SDKs , die vom Mandanten isoliert sind, geben Sie die Mandanten-ID in Ihre Aufrufanforderung ein.

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