首页 > 解决方案 > Terraform 错误“Provisioned Concurrency Configs cannot be applied to unpublished function versions” - 如何解决?

问题描述

我试图像这样创建一个预置并发 Lambda:

locals {
  lambda_name = "mylambda"
  provisioned_concurrency = 10
}

module "mylambda-lambda" {
  source = "terraform-aws-modules/lambda/aws"
 
  function_name = "${var.environment_name}-${local.lambda_name}"
  // abriged config detailes
}


module "mylambda-alias" {
  source = "terraform-aws-modules/lambda/aws//modules/alias"
  name = local.lambda_name
  function_name = module.mylambda-lambda.this_lambda_function_name
}

resource "aws_lambda_provisioned_concurrency_config" "auth_authorizer" {
  function_name = module.mylambda-lambda.this_lambda_function_name
  provisioned_concurrent_executions = local.provisioned_concurrency
  qualifier = module.mylambda-alias.this_lambda_alias_name
}

它在控制台中显示限定符(显然是别名)设置为$LATEST.

但是使用并发设置我得到了一个错误

Error: error putting Lambda Provisioned Concurrency Config (<lambda name>): InvalidParameterValueException: Provisioned Concurrency Configs cannot be applied to unpublished function versions.
{
  RespMetadata: {
    StatusCode: 400,
    RequestID: "392f5609-086e-43f6-89af-a0ec0f7e3dc7"
  },
  Message_: "Provisioned Concurrency Configs cannot be applied to unpublished function versions.",
  Type: "User"
}

如何避免这个错误?

标签: amazon-web-servicesaws-lambdaterraformterraform-provider-aws

解决方案


正如@jellycsc 所指出的,您需要发布一个新版本。

您已经为此使用了 terraform aws 模块,它接受标志publish

module "mylambda-lambda" {
  source = "terraform-aws-modules/lambda/aws"
  publish = true
 
  function_name = "${var.environment_name}-${local.lambda_name}"
  // abriged config detailes
}

完整的例子在这里


推荐阅读