You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terraform无法发布Lambda新版本的问题求助

问题分析与解决方案

你的Lambda版本未按预期更新,核心问题出在source_code_hash的配置上:你拼接了uuid()函数,这个函数每次执行terraform apply都会生成全新值,导致Terraform判定Lambda函数需要销毁重建,而非在现有函数基础上更新代码并发布新版本。新创建的Lambda函数版本会从V1重新开始,因此看不到版本递增。

以下是两种针对性解决方案:

方案1:仅当代码变更时发布新版本(推荐)

移除uuid(),让source_code_hash只反映实际代码包的哈希值,确保只有代码真的变化时才触发更新:

source_code_hash = var.source_code_hash

配合publish=true,每次代码哈希变化时,Terraform会自动在原函数基础上发布新的版本(如V2、V3...)。

注意:var.source_code_hash需要正确计算代码包的哈希,建议用filebase64sha256(var.filename)生成,确保代码内容变化时哈希值同步更新。

方案2:强制每次apply都发布新版本

如果确实需要每次执行terraform apply都发布新版本,不要用uuid()(会触发资源替换),可以通过以下两种方式实现:

  1. 使用timestamp()配合哈希处理,避免资源替换:
source_code_hash = "${var.source_code_hash}-${base64sha256(timestamp())}"
  1. 引入手动控制的版本变量,每次apply前手动递增:
variable "version" {
  type        = string
  description = "手动控制的版本号,用于触发Lambda更新"
}

source_code_hash = "${var.source_code_hash}-${var.version}"

以上两种方式都会触发Lambda代码更新,配合publish=true发布新版本,且不会销毁重建原有函数资源。

内容的提问来源于stack exchange,提问作者Mohammed Noman Razvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:38:10