Terraform创建AWS Lambda别名关联预置并发时出现ValidationException报错
问题解答
核心结论
在Lambda Alias中使用aws_lambda_function.foo.version作为function_version本身完全可行,该属性就是用来返回Lambda最新发布的版本号,刚好匹配你让别名指向最新部署版本的需求。
报错原因
你遇到的ValidationException是因为Lambda函数没有开启自动发布版本的配置:
Terraform的aws_lambda_function资源默认不会主动发布新版本,如果你没有在该资源中添加publish = true参数,aws_lambda_function.foo.version的返回值会一直是$LATEST,而Lambda预置并发不支持绑定到$LATEST版本,也不支持绑定指向$LATEST的别名,因此触发参数校验错误。
修正方案
只需在你的aws_lambda_function资源配置中新增一行publish = true即可,原有别名和预置并发的配置不需要修改:
resource "aws_lambda_function" "foo" { # 原有其他配置保持不变,比如filename、function_name、handler、runtime等参数 filename = "lambda_function_payload.zip" function_name = "foo" role = aws_iam_role.lambda_exec.arn handler = "index.handler" runtime = "nodejs18.x" # 新增此行,开启Lambda版本自动发布 publish = true } # 原有配置保持不变即可 resource "aws_lambda_alias" "foo_pc" { name = "PC" description = "foo PC Alias" function_name = aws_lambda_function.foo.arn function_version = aws_lambda_function.foo.version } resource "aws_lambda_provisioned_concurrency_config" "foo_provisioned_concurrency" { function_name = aws_lambda_alias.foo_pc.function_name provisioned_concurrent_executions = var.PCInit qualifier = aws_lambda_alias.foo_pc.name }
内容的提问来源于stack exchange,提问作者k2so
相关产品推荐
相关产品推荐

