

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
<a name="configure-client-lambda"></a>

Utilizza il [AWS Lambda processore](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/processors/aws-lambda/) per arricchire i dati da qualsiasi fonte 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 pipeline per un'ulteriore elaborazione. Questo processore consente l'elaborazione personalizzata dei dati e offre il pieno controllo sul modo in cui i dati vengono manipolati prima che entrino 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 risposte in formato array JSON.

## Prerequisiti
<a name="configure-clients-lambda-prereqs"></a>

Prima di creare una pipeline con un processore Lambda, create le seguenti risorse:
+ Una AWS Lambda funzione che arricchisce e trasforma i dati di origine. Per istruzioni, consulta [Creare la tua prima funzione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html).
+ Un dominio OpenSearch di servizio o una raccolta OpenSearch Serverless che fungerà da sink della pipeline. Per ulteriori informazioni, consultare [Creazione OpenSearch di domini di servizio](createupdatedomains.md#createdomains) e [Creazione di raccolte](serverless-create.md).
+ Un ruolo della pipeline che include le autorizzazioni di scrittura nel dominio o nel sink di raccolta. Per ulteriori informazioni, consulta [Ruolo della pipeline](pipeline-security-overview.md#pipeline-security-sink).

  Il ruolo pipeline necessita inoltre di una politica di autorizzazioni allegata che gli consenta di richiamare la funzione Lambda specificata nella configurazione della pipeline. 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
<a name="configure-clients-security-lake-pipeline-role"></a>

Per utilizzarlo AWS Lambda come processore, configura una pipeline di OpenSearch ingestione e specificala come processore. `aws_lambda` È inoltre possibile utilizzare il modello di **arricchimento AWS Lambda personalizzato** per creare la pipeline. Per ulteriori informazioni, consulta [Lavorare con i progetti](pipeline-blueprint.md).

La pipeline di esempio seguente riceve dati da un'origine HTTP, li arricchisce utilizzando un elaboratore di dati e il AWS Lambda processore e inserisce i dati 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-1}}es.amazonaws.com" ]
        index: "table-index"
        aws:
          region: "{{region}}"
          serverless: false
```

La AWS Lambda funzione di esempio seguente trasforma i dati in entrata aggiungendo una nuova coppia chiave-valore (`"transformed": "true"`) a ciascun elemento nell'array di eventi fornito, 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
<a name="configure-clients-lambda-batching"></a>

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_name`opzione nella configurazione del processore Lambda corrisponda alla chiave dell'evento nel gestore Lambda.

## Filtraggio condizionale
<a name="configure-clients-lambda-conditional-filtering"></a>

Il filtraggio 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"
```