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à.
Utilizzo di una pipeline OpenSearch di ingestione con AWS Lambda
Usa il AWS Lambda processore
Nota
Il limite di dimensione del payload per un singolo evento elaborato da un processore Lambda è di 5 MB. Inoltre, il processore Lambda supporta solo le risposte in formato array JSON.
Prerequisiti
Prima di creare una pipeline con un processore Lambda, crea le seguenti risorse:
-
Una AWS Lambda funzione che arricchisce e trasforma i dati di origine. Per istruzioni, consulta Creare la tua prima funzione Lambda.
-
Un dominio OpenSearch di servizio o una raccolta OpenSearch Serverless che fungerà da pipeline sink. Per ulteriori informazioni, consulta Creazione di domini OpenSearch di servizio e Creazione di raccolte.
-
Un ruolo di pipeline che include le autorizzazioni per scrivere nel dominio o nel sink di raccolta. Per ulteriori informazioni, consulta Ruolo della pipeline.
Il ruolo della pipeline richiede inoltre una politica di autorizzazioni allegata che gli consenta di richiamare la funzione Lambda specificata nella configurazione della pipeline. Ad esempio:
Crea una pipeline
Per utilizzarlo AWS Lambda come processore, configura una pipeline di OpenSearch Ingestion e specifica come processore. aws_lambda È inoltre possibile utilizzare il blueprint di arricchimento AWS Lambda
personalizzato per creare la pipeline. Per ulteriori informazioni, consulta Lavorare con i progetti.
La pipeline di esempio seguente riceve i dati da una fonte HTTP, li arricchisce utilizzando un processore di data e il processore e inserisce i dati AWS Lambda elaborati in un dominio. OpenSearch
version: "2" lambda-processor-pipeline: source: http: path: "/${pipelineName}/logs" processor: - date: destination: "@timestamp" from_time_received: true - aws_lambda: function_name: "my-lambda-function" tags_on_failure: ["lambda_failure"] batch: key_name: "events" aws: region:regionsink: - opensearch: hosts: [ "https://search-mydomain.us-east-1es.amazonaws.com" ] index: "table-index" aws: region: "region" serverless: false
La seguente AWS Lambda funzione di esempio trasforma i dati in entrata aggiungendo una nuova coppia chiave-valore ("transformed": "true") a ciascun elemento dell'array di eventi fornito e quindi restituisce la versione modificata.
import json def lambda_handler(event, context): input_array = event.get('events', []) output = [] for input in input_array: input["transformed"] = "true"; output.append(input) return output
Batching
Le pipeline inviano eventi in batch al processore Lambda e regolano dinamicamente la dimensione del batch per garantire che rimanga al di sotto del limite di 5 MB.
Di seguito è riportato un esempio di batch di pipeline:
batch: key_name: "events" input_arrary = event.get('events', [])
Nota
Quando crei una pipeline, assicurati che l'key_nameopzione nella configurazione del processore Lambda corrisponda alla chiave dell'evento nel gestore Lambda.
Filtraggio condizionale
Il filtro condizionale consente di controllare quando il AWS Lambda processore richiama la funzione Lambda in base a condizioni specifiche nei dati degli eventi. Ciò è particolarmente utile quando si desidera elaborare selettivamente determinati tipi di eventi ignorandone altri.
La seguente configurazione di esempio utilizza il filtro condizionale:
processors: - aws_lambda: function_name: "my-lambda-function" aws: region: "region" lambda_when: "/sourceIp == 10.10.10.10"