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

使用AWSCC Terraform Provider部署Lambda时文件结构异常求助

解决AWSCC Terraform Provider部署Lambda包结构异常的问题

核心原因

AWSCC Provider对Lambda部署包的路径要求和传统AWS Provider存在差异:AWSCC要求zip包内直接包含代码文件(不能嵌套在子目录中),如果打包时误将当前目录(而非目录内的文件)加入zip,就会出现控制台显示的结构异常。

解决办法

1. 手动修正打包方式

在包含main.py的目录下,执行精准打包命令,确保zip内仅存在main.py文件:

zip lambda_function_payload.zip main.py

避免使用zip -r lambda_function_payload.zip .这类递归打包命令,否则会将当前目录的所有内容(包括隐藏文件、子目录)打包进去,导致AWSCC解析异常。

2. 用Terraform资源自动生成合规包

在main.tf中添加archive_file资源,让Terraform自动生成符合要求的zip包,避免手动打包出错:

resource "archive_file" "lambda_zip" {
  type        = "zip"
  source_file = "${path.module}/main.py"
  output_path = "${path.module}/lambda_function_payload.zip"
}

resource "awscc_lambda_function" "example" {
  function_name = "example-lambda"
  runtime       = "python3.12"
  handler       = "main.lambda_handler"
  role          = aws_iam_role.lambda_role.arn
  code {
    zip_file = filebase64(archive_file.lambda_zip.output_path)
  }
}

3. 替代方案:沿用AWS Provider

如果AWSCC的适配问题难以快速排查,可继续使用兼容性更成熟的AWS Provider部署,它对打包格式的容错性更强:

resource "aws_lambda_function" "example" {
  filename      = "lambda_function_payload.zip"
  function_name = "example-lambda"
  role          = aws_iam_role.lambda_role.arn
  handler       = "main.lambda_handler"
  runtime       = "python3.12"
}

验证方式

部署完成后,在Lambda控制台的「代码」标签页确认能直接看到main.py文件,而非嵌套在某个子目录下。若显示目录结构,说明打包方式错误,需重新打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:24:52