首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform资源AWS LAMBDA GO错误:"fork/exec /var/task/main:没有这样的文件或目录“

Terraform资源AWS LAMBDA GO错误:"fork/exec /var/task/main:没有这样的文件或目录“
EN

Stack Overflow用户
提问于 2021-12-02 12:32:40
回答 1查看 416关注 0票数 0

我有一个go脚本,我正在制作具有如下运行时配置的Terraform资源aws_lambda_function:

代码语言:javascript
复制
  handler     = "main"
  memory_size = 512
  timeout     = 360
  runtime     = "go1.x"

在我的go代码中,我已经导入了模块:

代码语言:javascript
复制
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-lambda-go/events"

和ecr-sync.go的一段代码

代码语言:javascript
复制
 func main() {
        lambda.Start(HandleRequest)
    }
    
    func HandleRequest(ctx context.Context, event event.HandleRequest)(string,error) {
      return string(body),err
}

lambda函数已部署,但在测试该函数时,它抛出了以下错误:

代码语言:javascript
复制
{
  "errorMessage": "fork/exec /var/task/main: no such file or directory",
  "errorType": "PathError"
}

有人知道如何解决这个问题吗?我看到了这篇文章https://github.com/serverless/serverless/issues/4710,但我不确定如何通过管道设置构建配置,因为运行时配置是通过terraform设置的。

EN

回答 1

Stack Overflow用户

发布于 2021-12-02 15:00:26

“分支/exec /var/task/main:没有这样的文件或目录”

该错误意味着您的lambda压缩文件中的可执行文件没有命名为main

在Lambda的Go API中,处理程序必须在main包中,并且必须在main()函数中调用它,就像您的一样。包和函数名都不需要在任何地方设置。资源中的handler设置是指上传的zip文件中的可执行文件的文件名。

从错误中可以清楚地看出,您的压缩文件没有main。(/var/task来自lambda端的内部设置)。

部署了lambda函数,但在测试该函数时,它抛出了以下错误:

是的,部署函数不会验证其处理程序配置是否与其zipfile匹配。该错误发生在运行时。包含扩展名的文件名无关紧要,但必须与您在lambda配置中指定的处理程序匹配。

要修复该错误,请检查您的zipfile,并更新处理程序以指向可执行文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70199536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档