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

Terraform中Lambda的source_code_hash基于S3时间戳无法更新状态缓存

Terraform配置AWS Lambda时source_code_hash无法更新的问题与解决办法

背景

用Terraform配置AWS Lambda,希望检测到代码变更时自动更新Lambda代码,因此采用source_code_hash属性。构建流程会将源码打包为zip上传至S3存储桶,通过S3对象的最后修改时间触发重新部署。

问题

部署变更时,source_code_hash始终无法更新。Terraform计划显示将其更新为b0IwKd/Fk38A+R20lGIWwCWP6p9UKmAmwns0it2J4qA=,但状态中始终保持为b2+fXCsSQrxTJq5RonkDz8KhyOt8ICJYZGSsHkygrvY=,每次执行apply都会重复提示相同变更。

尝试的配置

试过以下几种source_code_hash赋值方式:

  • source_code_hash = base64encode(sha256(data.aws_s3_object.this.last_modified))
  • source_code_hash = "${base64sha256(data.aws_s3_object.this.last_modified)}"
  • source_code_hash = base64sha256("${data.aws_s3_object.this.last_modified}")
  • source_code_hash = base64sha256("Wed, 15 Mar 2023 21:08:25 GMT")

初始Terraform配置如下:

data "aws_s3_object" "this" {
  bucket = var.s3_bucket
  key    = var.s3_key
}

resource "aws_lambda_function" "this" {
  s3_bucket        = var.s3_bucket
  s3_key           = var.s3_key
  source_code_hash = base64sha256(data.aws_s3_object.this.last_modified)
  ...
}

解决方案

最终通过上传sha256.txt文件至S3存储桶,读取该文件内容生成source_code_hash解决问题。注意文件需带.txt后缀,否则data.aws_s3_object.this.body会返回null。


内容的提问来源于stack exchange,提问作者Istvan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:22:50