Golang结合Serverless框架开发实践
Golang结合Serverless框架开发实践 大家好,
有人能帮助我使用无服务器框架部署 Golang 的 AWS Lambda 代码吗? 我按照文档操作,它成功部署并创建了 Lambda 函数,但无法运行,提示权限被拒绝。
我使用的是 Windows 10 系统。
请注意,我能够按照 AWS 文档手动部署 Go Lambda 代码,使用 build-lambda-zip.exe 进行构建和压缩。
问题出现在使用无服务器框架进行自动部署时。
你在AWS上设置权限了吗?
这是一篇不错的文章:
http://www.alexedwards.net/blog/serverless-api-with-go-and-aws-lambda
更多关于Golang结合Serverless框架开发实践的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在 Windows 10 上使用 Serverless Framework 部署 Go AWS Lambda 时遇到权限被拒绝的问题,通常是由于构建过程中文件权限或路径问题导致的。以下是解决方案和示例代码。
首先,确保您的 serverless.yml 配置正确,指定 Go 运行时和构建命令。示例 serverless.yml 文件:
service: go-lambda-serverless
provider:
name: aws
runtime: go1.x
region: us-east-1
functions:
hello:
handler: bin/hello
events:
- http:
path: hello
method: get
plugins:
- serverless-go-build
custom:
goBuild:
bin: ./bin
cmd: GOOS=linux GOARCH=amd64 go build -o bin/hello main.go
skipCheck: true
在 Windows 上,使用 serverless-go-build 插件时,可能需要处理路径分隔符问题。安装插件:
npm install --save-dev serverless-go-build
然后,在项目根目录创建 main.go 文件,示例代码:
package main
import (
"context"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func handler(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
return events.APIGatewayProxyResponse{
StatusCode: 200,
Body: "Hello from Go Lambda with Serverless!",
}, nil
}
func main() {
lambda.Start(handler)
}
运行部署命令:
serverless deploy
如果仍然遇到权限问题,可能是因为 Windows 环境变量或构建输出路径不正确。确保在 Windows 命令提示符或 PowerShell 中设置环境变量:
set GOOS=linux
set GOARCH=amd64
go build -o bin/hello main.go
或者,在 PowerShell 中:
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o bin/hello main.go
然后重新运行 serverless deploy。这应该解决权限被拒绝的问题,并成功部署 Lambda 函数。

