View a markdown version of this page

Utilizzo di una pipeline OpenSearch di ingestione con AWS Lambda - OpenSearch Servizio Amazon

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 per arricchire i dati da qualsiasi origine o destinazione supportata da OpenSearch Ingestion utilizzando codice personalizzato. Con il processore Lambda, puoi applicare le tue trasformazioni o arricchimenti dei dati e quindi restituire gli eventi elaborati alla tua pipeline per un'ulteriore elaborazione. Questo processore consente un'elaborazione personalizzata dei dati e offre il pieno controllo su come i dati vengono manipolati prima che vengano trasferiti nella pipeline.

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:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "allowinvokeFunction", "Effect": "Allow", "Action": [ "lambda:invokeFunction", "lambda:InvokeAsync", "lambda:ListFunctions" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:function-name" } ] }

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: region sink: - 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"