

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 에서 OpenSearch Ingestion 파이프라인 사용 AWS Lambda
<a name="configure-client-lambda"></a>

[AWS Lambda 프로세서](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/processors/aws-lambda/)에서 사용자 지정 코드를 사용하여 OpenSearch Ingestion에서 지원하는 모든 소스 또는 대상의 데이터를 보강합니다. Lambda 프로세서를 사용하면 자체 데이터 변환 또는 보강을 적용한 다음 처리된 이벤트를 파이프라인에 반환하여 추가 처리를 수행할 수 있습니다. 이 프로세서를 사용하면 사용자 지정 데이터 처리를 활성화하고 파이프라인을 통과하기 전에 데이터가 조작되는 방식을 완벽하게 제어할 수 있습니다.

**참고**  
Lambda 프로세서에서 처리하는 단일 이벤트의 페이로드 크기 제한은 5MB입니다. 또한 Lambda 프로세서는 JSON 배열 형식의 응답만 지원합니다.

## 사전 조건
<a name="configure-clients-lambda-prereqs"></a>

Lambda 프로세서를 사용하여 파이프라인을 생성하기 전에 다음 리소스를 생성합니다.
+ 소스 데이터를 보강하고 변환하는 AWS Lambda 함수입니다. 지침은 [첫 번째 Lambda 함수 생성](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)을 참조하세요.
+ 파이프라인 싱크가 될 OpenSearch Service 도메인 또는 OpenSearch Serverless 컬렉션입니다. 자세한 내용은 [OpenSearch Service 도메인 생성](createupdatedomains.md#createdomains) 및 [컬렉션 생성](serverless-create.md) 섹션을 참조하세요.
+ 도메인 또는 컬렉션 싱크에 쓸 권한이 포함된 파이프라인 역할입니다. 자세한 내용은 [파이프라인 역할](pipeline-security-overview.md#pipeline-security-sink) 단원을 참조하십시오.

  파이프라인 역할에는 파이프라인 구성에 지정된 Lambda 함수를 호출할 수 있는 연결된 권한 정책도 필요합니다. 예제: 

------
#### [ 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}}"
              
          }
      ]
  }
  ```

------

## 파이프라인 생성
<a name="configure-clients-security-lake-pipeline-role"></a>

를 프로세서 AWS Lambda 로 사용하려면 OpenSearch Ingestion 파이프라인을 구성하고를 프로세서`aws_lambda`로 지정합니다. **AWS Lambda 사용자 지정 보강** 블루프린트를 사용하여 파이프라인을 생성할 수도 있습니다. 자세한 내용은 [블루프린트 작업](pipeline-blueprint.md) 단원을 참조하십시오.

다음 예제 파이프라인은 HTTP 소스에서 데이터를 수신하고, 날짜 프로세서와 AWS Lambda 프로세서를 사용하여 데이터를 보강하고, 처리된 데이터를 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
```

다음 예제 AWS Lambda 함수는 제공된 이벤트 배열의 각 요소에 새 키-값 페어(`"transformed": "true"`)를 추가하여 수신 데이터를 변환한 다음 수정된 버전을 다시 보냅니다.

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

## 배칭
<a name="configure-clients-lambda-batching"></a>

파이프라인은 배치 이벤트를 Lambda 프로세서로 전송하고 배치 크기를 동적으로 조정하여 5MB 한도 미만으로 유지되도록 합니다.

다음은 파이프라인 배치의 예입니다.

```
batch:
    key_name: "events"

input_arrary = event.get('events', [])
```

**참고**  
파이프라인을 생성할 때 Lambda 프로세서 구성의 `key_name` 옵션이 Lambda 핸들러의 이벤트 키와 일치하는지 확인합니다.

## 조건부 필터링
<a name="configure-clients-lambda-conditional-filtering"></a>

조건부 필터링을 사용하면 AWS Lambda 프로세서가 이벤트 데이터의 특정 조건을 기반으로 Lambda 함수를 호출하는 시기를 제어할 수 있습니다. 이는 다른 이벤트를 무시하면서 특정 유형의 이벤트를 선택적으로 처리하려는 경우에 특히 유용합니다.

다음 구성 예에서는 조건부 필터링을 사용합니다.

```
processors:
  - aws_lambda:
      function_name: "my-lambda-function"
      aws:
        region: "region"
      lambda_when: "/sourceIp == 10.10.10.10"
```