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

Terraform新手调用lambda-deploy访问S3包时触发local-exec错误,求解决

解决Terraform local-exec调用lambda-deploy脚本的exit status 1错误

问题背景

使用Terraform的null_resource搭配local-exec provisioner调用自定义Python脚本lambda-deploy,尝试部署AWS S3存储桶中的Lambda软件包时,触发exit status 1错误,具体报错及代码如下:

错误信息

Error: local-exec provisioner error

│ with module.serverless_projects["api/contentful.zip"].null_resource.serverless_deployment,
│ on serverless_project/deployment.tf line 6, in resource "null_resource" "serverless_deployment":
│ 6: provisioner "local-exec" {
│ Error running command 'lambda-deploy api/contentful.zip': exit status 1.

关联Terraform代码

resource "null_resource" "serverless_deployment" {
  triggers = {
    source_version = data.aws_s3_object.package_object.version_id
  }

  provisioner "local-exec" {
    command = "lambda-deploy ${var.package_name}"
  }
}

排查与解决步骤

1. 先直接测试脚本本身

Terraform只返回脚本的退出状态码,不会显示脚本内部的错误详情,所以先在本地终端手动执行命令:

lambda-deploy api/contentful.zip

或者如果是Python脚本,直接用Python运行:

python lambda-deploy api/contentful.zip

查看具体报错信息,这是定位问题的核心步骤。

2. 验证脚本权限与路径

  • 若脚本是可执行文件,检查是否有执行权限:
    chmod +x lambda-deploy
    
  • 若脚本不在系统PATH中,在Terraform的command里指定完整路径,比如:
    command = "./lambda-deploy ${var.package_name}"
    

3. 确认AWS权限与凭证

  • 确保Terraform运行时使用的AWS账号拥有以下权限:
    • S3:s3:GetObject、s3:ListBucket(访问目标存储桶及对象)
    • Lambda:lambda:CreateFunction、lambda:UpdateFunctionCode(部署Lambda)
  • 检查本地AWS凭证(~/.aws/credentials或环境变量)是否有效,且与Terraform使用的配置一致。

4. 验证S3对象的有效性

  • 确认data.aws_s3_object.package_object正确获取到了目标对象,可添加输出验证:
    output "s3_package_details" {
      value = data.aws_s3_object.package_object
    }
    
    执行terraform apply后查看输出,确认对象的version_id和路径正确,且对象确实存在于S3桶中。

5. 增强local-exec的日志输出

修改local-exec命令,将脚本的错误输出重定向到标准输出,以便在Terraform日志中看到详情:

provisioner "local-exec" {
  command = "lambda-deploy ${var.package_name} 2>&1"
}

6. 检查脚本逻辑

  • 确认脚本是否需要完整的S3 URI(比如s3://your-bucket/api/contentful.zip)而非相对路径,若需完整路径,需修改var.package_name的取值。
  • 查看脚本内部的错误处理逻辑,确保遇到异常时会输出明确的错误信息,而非仅返回非0退出码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:25:18