为什么在此 AWS Lambda 部署包中找不到处理程序脚本?
Why is handler script not found in this AWS Lambda deployment package?
以下是来自 https://docs.aws.amazon.com/lambda/latest/dg/golang-handler.html 的 golang
示例 lambda 函数:
$ cat ./foo.go
package main
import (
"fmt"
"context"
"github.com/aws/aws-lambda-go/lambda"
)
type MyEvent struct {
Name string `json:"name"`
}
func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
return fmt.Sprintf("Hello %s!", name.Name ), nil
}
func main() {
lambda.Start(HandleRequest)
}
我相信我已经正确地按照以下步骤创建部署包:
$ GOOS=linux go build foo.go
$ zip foo.zip foo
adding: foo (deflated 49%)
$
上面的lambda函数或者部署包有什么问题?如果没有,为什么 lambda 创建函数会因无法找到处理程序脚本而失败?
$ aws --profile jack --endpoint-url http://localhost:4574 lambda create-function --function-name foo --runtime go1.x --zip-file fileb://foo.zip --handler main --role arn:aws:iam::000000000000:role/lambda-role
An error occurred (ValidationError) when calling the CreateFunction operation: Unable to find handler script (/tmp/localstack/zipfile.07e4ae91/main) in Lambda archive. Config for local mount, docker, remote: "False", "True", "True"
$
请查看以下 github 个问题和 PR:
enable/use 进入 localstack 可能需要特殊步骤。
以下是来自 https://docs.aws.amazon.com/lambda/latest/dg/golang-handler.html 的 golang
示例 lambda 函数:
$ cat ./foo.go
package main
import (
"fmt"
"context"
"github.com/aws/aws-lambda-go/lambda"
)
type MyEvent struct {
Name string `json:"name"`
}
func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
return fmt.Sprintf("Hello %s!", name.Name ), nil
}
func main() {
lambda.Start(HandleRequest)
}
我相信我已经正确地按照以下步骤创建部署包:
$ GOOS=linux go build foo.go
$ zip foo.zip foo
adding: foo (deflated 49%)
$
上面的lambda函数或者部署包有什么问题?如果没有,为什么 lambda 创建函数会因无法找到处理程序脚本而失败?
$ aws --profile jack --endpoint-url http://localhost:4574 lambda create-function --function-name foo --runtime go1.x --zip-file fileb://foo.zip --handler main --role arn:aws:iam::000000000000:role/lambda-role
An error occurred (ValidationError) when calling the CreateFunction operation: Unable to find handler script (/tmp/localstack/zipfile.07e4ae91/main) in Lambda archive. Config for local mount, docker, remote: "False", "True", "True"
$
请查看以下 github 个问题和 PR:
enable/use 进入 localstack 可能需要特殊步骤。