使用 AWS Lambda 进行搜索
注意
Tempo 无服务器功能现已弃用,并将在即将发布的版本中移除。
本文档解释了如何设置 AWS Lambda 以进行无服务器后端搜索。有关后端搜索的配置选项,请阅读提高搜索性能。
构建代码包
cd ./cmd/tempo-serverless && make build-lambda-zip
这将创建一个 ZIP 文件,其中包含函数所需的二进制文件。文件名的格式为:
./lambda/tempo-<分支名称>-<提交哈希>.zip
。以下是文件名的示例:ls lambda/*.zip lambda/tempo-serverless-backend-search-297172a.zip
预置一个 S3 存储桶。
将 ZIP 文件复制到您的存储桶中。
aws s3 cp lambda/tempo-serverless-backend-search-297172a.zip gs://<newly provisioned gcs bucket>
预置 Lambda。要通过 HTTP 调用 Lambda 函数,我们还需要创建一个 ALB 和其他一些资源。本示例使用 Terraform,仅包含函数定义。此外,您还需要 VPC、安全组、IAM 角色、ALB、目标组等,但这超出了本指南的范围。
locals { // this can be increased if you would like to use multiple functions count = 1 } resource "aws_lambda_function" "lambda" { count = local.count function_name = "${local.name}-${count.index}" description = "${local.name}-${count.index}" role = <arn of appropriate role> handler = "main" runtime = "go1.x" timeout = "60" s3_key = "tempo-serverless-backend-search-297172a.zip" s3_bucket = <S3 bucket created above> memory_size = 1769 # 1 vcpu vpc_config { subnet_ids = <appropriate subnets> security_group_ids = [<appropriate security groups>] } environment { variables = { "TEMPO_S3_BUCKET" = "<S3 bucket name backing your Tempo instance>" "TEMPO_BACKEND" = "s3" "TEMPO_S3_HEDGE_REQUESTS_AT" = "400ms" "TEMPO_S3_HEDGE_REQUESTS_UP_TO" = "2" "TEMPO_S3_ENDPOINT" = "s3.dualstack.us-east-2.amazonaws.com" } } }
将新创建的 ALB 的主机名添加到查询器配置中
querier: search: external_endpoints: - http://<alb dns hostname>