OpenSearch Data Prepper 的 aws_lambda
接收器
本页面介绍了如何配置和使用 AWS Lambda 与 OpenSearch Data Prepper,使 Lambda 函数能够同时充当处理器和接收器。
aws_lambda
接收器
使用以下参数配置 Lambda 接收器。
字段 | 类型 | 必需 | 描述 |
---|---|---|---|
function_name | 字符串 | 是 | 要调用的 AWS Lambda 函数的名称。 |
invocation_type | 字符串 | 否 | 指定调用类型。默认值为 event 。 |
aws.region | 字符串 | 是 | Lambda 函数所在的 AWS 区域。 |
aws.sts_role_arn | 字符串 | 否 | 在调用 Lambda 函数之前要假定的角色的 Amazon 资源名称 (ARN)。 |
max_retries | 整数 | 否 | 如果调用失败,最大重试次数。默认值为 3 。 |
batch | 对象 | 否 | Lambda 调用的可选批处理设置。默认值为 key_name = events 。默认阈值为 event_count=100 、maximum_size="5mb" 和 event_collect_timeout = 10s 。 |
lambda_when | 字符串 | 否 | 确定何时调用 Lambda 接收器的条件表达式。 |
dlq | 对象 | 否 | 用于失败调用的死信队列 (DLQ) 配置。 |
示例配置
sink:
- aws_lambda:
function_name: "my-lambda-sink"
invocation_type: "event"
aws:
region: "us-west-2"
sts_role_arn: "arn:aws:iam::123456789012:role/my-lambda-sink-role"
max_retries: 5
batch:
key_name: "events"
threshold:
event_count: 50
maximum_size: "3mb"
event_collect_timeout: PT5S
lambda_when: "event['type'] == 'log'"
dlq:
region: "us-east-1"
sts_role_arn: "arn:aws:iam::123456789012:role/my-sqs-role"
bucket: "<<your-dlq-bucket-name>>"
用法
调用类型如下:
event
(默认):异步执行函数,无需等待响应。request-response
(仅限接收器):同步执行函数,但响应不被处理。batch
:根据配置的阈值自动对事件进行分组。dlq
:在重试尝试后,支持针对失败调用的 DLQ 配置。
Data Prepper 组件使用 AWS 身份和访问管理 (IAM) 角色假定 aws.sts_role_arn
,以安全地调用 Lambda 函数,并在事件处理期间遵守 Lambda 的并发限制。更多信息,请参阅 AWS Lambda 文档。
开发者指南
集成测试必须与主 Data Prepper 构建分开执行。使用以下命令执行:
./gradlew :data-prepper-plugins:aws-lambda:integrationTest -Dtests.sink.lambda.region="us-east-1" -Dtests.sink.lambda.functionName="lambda_test_function" -Dtests.sink.lambda.sts_role_arn="arn:aws:iam::123456789012:role/dataprepper-role