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

Terraform部署AWS Lambda Go项目source_code_hash异常问题咨询

问题:Terraform部署AWS Lambda Go项目时source_code_hash不一致的问题

现象

第一次构建时,Terraform计划输出如下:

# module.api_cloneChallenge.aws_lambda_function.api_service will be updated in-place
  ~ resource "aws_lambda_function" "api_service" {
        id                             = "gs-dev-api-cloneChallenge"
      ~ last_modified                  = "2023-05-18T07:56:00.000+0000" -> (known after apply)
      ~ source_code_hash               = "hjmfsj2XzbEKUUIlEm/Qs9DnjOVbEaIngtySBVVZ/qk=" -> "dn01BTEl9sqcIWsXGaa0FBxworrCawR9cDnpcSNcUyo="
        tags                           = {
            "Layer"       = "API"
            "Name"        = "gs-dev-api-cloneChallenge"
            "OperationID" = "cloneChallenge"
            "Stage"       = "dev"
        }
        # (16 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

此时新的source_code_hash值为dn01BTEl9sqcIWsXGaa0FBxworrCawR9cDnpcSNcUyo=,但第二次构建时,Terraform计划显示的原有source_code_hash值完全不同:

# module.api_cloneChallenge.aws_lambda_function.api_service will be updated in-place
  ~ resource "aws_lambda_function" "api_service" {
        id                             = "gs-dev-api-cloneChallenge"
      ~ last_modified                  = "2023-05-18T08:25:48.000+0000" -> (known after apply)
      ~ source_code_hash               = "xgzR2ARivgWErotmKxpRdCEptOYZGTtevVvyQV8Gbbs=" -> "k1s1s3QgzyZhLn1vvKxszs3N5bII5eR8WKt2N4grgIQ="
        tags                           = {
            "Layer"       = "API"
            "Name"        = "gs-dev-api-cloneChallenge"
            "OperationID" = "cloneChallenge"
            "Stage"       = "dev"
        }
        # (16 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

当前配置

我在Terraform中通过以下方式计算哈希:

value = filebase64sha256(data.external.makefile_package.result.binary_path)

由于使用zip文件时,即使采用确定性压缩,GitHub Actions每次构建的哈希仍不同,因此我直接计算二进制文件的SHA256哈希。此外我还尝试使用修改文件的最后提交哈希,结果同样:Terraform计划中显示的哈希值与部署后tfstate文件中的值完全不同。

疑问

我发现source_code_hash的值始终与AWS上的SHA256哈希一致,请问:

  • 为什么会出现这种哈希不一致的情况?
  • 能否自定义source_code_hash的值?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:23:08