gpt4 book ai didi

go - 使用 Go 和 Cloudformation 部署 AWS Lambda

转载 作者:IT王子 更新时间:2023-10-29 01:28:00 26 4
gpt4 key购买 nike

我正在完成基于 Go 的 AWS Lambda 的自动部署,但遇到了问题。

我的 AWS 无服务器模板是:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
HelloLambda:
Type: AWS::Serverless::Function
Properties:
Handler: hello
Runtime: go1.x
CodeUri: ./deploy/hello.zip
Environment:
Variables:
S3_BUCKET: hello_lambda

我通过以下方式部署它:

GOOS=linux GOARCH=amd64 go build -o ./deploy/hello
zip ./deploy/hello.zip ./deploy/hello
aws cloudformation package \
--template-file hello.yaml \
--output-template-file serverless-deploy_hello.yaml \
--s3-bucket hello_deploy
aws cloudformation deploy\
--template-file serverless-deploy_hello.yaml\
--stack-name hello-lambda\
--capabilities CAPABILITY_IAM

当 Cloudformation 执行它的操作时,serverless-deploy_hello.yaml 具有 CodeUri: s3://hello_deploy/17ab86653aab79eee51fc6f77d7a152e 并且 s3 存储桶包含 zip 文件(当我下载它在本地并使用 cmp 它是完全相同的)。

但是当我测试生成的 Lambda 时,它给了我:

{
"errorMessage": "fork/exec /var/task/hello: no such file or directory",
"errorType": "PathError"
}

不太确定我在这里做错了什么......

==== 已解决 ====

上面的 zip 命令也压缩目录路径,因此可执行文件解压缩到 deploy/hello 而不是 ./hello

因此,Lambda 运行时无法连接到进程。

最佳答案

{
"errorMessage": "fork/exec /var/task/hello: no such file or directory",
"errorType": "PathError"
}

这将在您的 zip 文件中查找 hello 函数作为应用程序的起点。如果您想继续使用主要功能或其他功能

func main() {
lambda.Start(HandleLambdaEvent)
}

您需要更改 AWS Lambda 函数模板上的处理程序名称(默认为 hello)。 enter image description here

关于go - 使用 Go 和 Cloudformation 部署 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49000980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com