提问人:Sree Teja 提问时间:12/30/2021 更新时间:3/29/2023 访问量:1408
使用 Terraform 的 AWS Lambda 预置并发问题
Issue with AWS Lambda Provisioned Concurrency using Terraform
问:
我一直在尝试为我的 AWS Lambda 函数进行配置。我一次又一次地打。我尝试了别名版本和别名的属性。虽然它等待了 2 分钟并引发错误,但它已在 AWS 控制台中成功配置,状态为 ready。下面是我的配置。Provisioned Concurrency
ValidationException
qualifier
terraform apply
resource "aws_lambda_alias" "contact_lambda_alias" {
name = module.aws_lambda_function_contact_alias_label.id
function_name = module.terraform_aws_lambda_contact.lambda_arn
function_version = module.terraform_aws_lambda_contact.latest_published_version
}
resource "aws_lambda_provisioned_concurrency_config" "contact_lambda_alias" {
function_name = module.terraform_aws_lambda_contact.lambda_arn
provisioned_concurrent_executions = 1
qualifier = module.terraform_aws_lambda_contact.latest_published_version
timeouts {
create = "30m"
update = "30m"
}
}
我尝试了有和没有阻挡,但仍然一次又一次地击中。
这是错误 ValidationExceptiontimeouts
ValidationException
答:
0赞
Marcin
12/31/2021
#1
您应该使用别名 arn:
function_name = aws_lambda_alias.contact_lambda_alias.arn
评论
0赞
Sree Teja
12/31/2021
根据 Terraform 注册表中的文档,应该是 lambda arn 而不是别名。function_name
0赞
Sree Teja
12/31/2021
这是我尝试使用别名 arn 时出现的错误。error putting Lambda Provisioned Concurrency Config (arn:aws:lambda:ca-central-1:xxxxxxxxxxxx:function:ifs-dev-customer-contact:ifs-dev-ax-contact-alias:4): InvalidParameterValueException: The derived qualifier from the function name does not match the specified qualifier.
function_name
0赞
Sree Teja
12/31/2021
{ │ RespMetadata: { │ StatusCode: 400, │ RequestID: "a3bc271b-5f82-4bfa-bac7-4c155996f6f0" │ }, │ Message_: "The derived qualifier from the function name does not match the specified qualifier.", │ Type: "User" │ }
0赞
Marcin
12/31/2021
@SreeTeja Prov Conc 仅适用于别名或版本,正如 AWS 解释的那样:“$LATEST 不支持预置并发。甚至 TF 文档也使用别名function_name = aws_lambda_alias.example.function_name
0赞
Sree Teja
12/31/2021
但是是本身,所以我使用了 lambda arn。aws_lambda_alias.example.function_name
lambda_arn
0赞
Stephane
3/29/2023
#2
截至 2023 年的完整工作示例。
您需要使用depends_on。
请勿将 arn 用于 aws_lambda_provisioned_concurrency_config.function_name 。查看未解决的问题
# Lambda
resource "aws_lambda_function" "my_lambda" {
...
publish = true // Need to publish because of aws_lambda_provisioned_concurrency_config
...
}
resource "aws_lambda_alias" "my_lambda_alias" {
depends_on = [aws_lambda_function.my_lambda] // Important
name = "LATEST"
description = "Latest version"
function_name = aws_lambda_function.my_lambdag.arn
function_version = aws_lambda_function.lambda_wiseday_ml_rating.version
}
resource "aws_lambda_provisioned_concurrency_config" "my_lambda_concurrency_config" {
depends_on = [aws_lambda_alias.my_lambda_alias] // Important
function_name = aws_lambda_function.my_lambda.function_name // Not arn. Bug with arn.
provisioned_concurrent_executions = 1
qualifier = aws_lambda_alias.my_lambda_alias.name
}
评论
aws_lambda_provisioned_concurrency_config