使用Terraform部署AWS Lambda出现PackageType为Zip需设置handler与runtime错误
解决方案
你当前缺少handler参数配置,该参数需要按照Python Lambda的规则填写,具体逻辑如下:
- Python运行时的Lambda handler格式为:
[代码文件所在路径(压缩包内相对路径).]<不带.py后缀的代码文件名>.<入口函数名> - 你当前代码里定义的入口函数名为
lambda_handler,只需要匹配你压缩包内的Python文件路径和名称即可。
常见配置示例
假设你打包进existing-files-lambda.zip的Python代码文件名为lambda_function.py,且直接放在压缩包根目录,直接在你的aws_lambda_function资源块中新增如下配置即可:
handler = "lambda_function.lambda_handler"
修改后的完整Lambda资源配置参考:
resource "aws_lambda_function" "this" { filename = "${path.module}/src/existing-files-lambda.zip" function_name = "ingest-existing-files-lambda" role = aws_iam_role.lambda.arn runtime = "python3.9" handler = "lambda_function.lambda_handler" # 新增的handler配置 timeout = 900 environment { variables = { source_bucket_arn = var.source_bucket_arn destination_bucket_arn = var.destination_bucket_arn } } }
特殊情况说明
如果你的Python代码在压缩包内放在子目录下,比如压缩包根目录下有src文件夹,src文件夹内才是lambda_function.py,则handler需要配置为:
handler = "src.lambda_function.lambda_handler"
验证方法:你可以手动解压
existing-files-lambda.zip,查看Python代码的相对路径和文件名,对应调整handler参数即可。
内容的提问来源于stack exchange,提问作者user13067694
相关产品推荐
相关产品推荐

