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

为什么在Terraform中使用filebase64sha256时报zip内容非有效UTF-8?

错误原因

file()是Terraform专门用于读取UTF-8编码文本文件的函数,而lambda.zip是二进制压缩文件,不符合UTF-8编码规则,因此只要代码中调用了file("lambda.zip"),不管后续套什么哈希计算函数,都会先触发该报错,这也是你换用base64sha256(file("lambda.zip"))写法仍然报错的原因。

解决方案

filebase64sha256函数本身支持直接传入文件路径作为入参,不需要嵌套file()读取文件内容,直接修改配置即可:

resource "aws_lambda_function" "dev" {
  role             = aws_iam_role.dev.arn
  handler          = var.handler
  runtime          = var.runtime
  filename         = "lambda.zip"
  function_name    = var.function_name
  source_code_hash = filebase64sha256("lambda.zip")
}

如果你的lambda压缩包是通过archive_file数据源自动生成的,还可以直接引用数据源的内置属性,避免手动处理文件路径,可靠性更高:

# 生成lambda压缩包的数据源示例
data "archive_file" "lambda_package" {
  type        = "zip"
  source_file = "main.py"
  output_path = "lambda.zip"
}

# 直接引用内置的base64sha256计算结果
resource "aws_lambda_function" "dev" {
  role             = aws_iam_role.dev.arn
  handler          = var.handler
  runtime          = var.runtime
  filename         = data.archive_file.lambda_package.output_path
  function_name    = var.function_name
  source_code_hash = data.archive_file.lambda_package.output_base64sha256
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:24:05