我尝试了一下AWS SAM来在本地开发AWS Lambda(Hello World版)
特点
-
- aws samを利用してテンプレートプロジェクトが作れるので楽です
-
- Makefileは利用するgoライブラリだけをDLするように変更してください
- テンプレートのgo fileを変更して新しいfunctionを作成してください
需求
-
- golang:1.11.4
-
- pip
-
- python
- docker (local lambda test)
安装
-
- aws-cli
-
- aws-sam-cli
- golang (1.x)
AWS Serverless Application Model 命令行界面
根据AWS官方网站的指引,下载aws-sam-cli。
https://docs.aws.amazon.com/zh_cn/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html
-
- 安装python和pip
$ brew install python
$ pip install –upgrade pip
$ pip install –user –upgrade setuptools
安装aws-cli并进行配置
$ pip install awscli –upgrade –user
$ aws configure
设置aws sam命令
$ pip install –user –upgrade aws-sam-cli
※ 如果已经安装了旧版本,则先卸载它
$ npm uninstall -g aws-sam-local
设置路径
$ USER_BASE_PATH=$(python -m site –user-base)
$ export PATH=$PATH:$USER_BASE_PATH/bin
检查命令是否可用
$ sam –version
SAM CLI, 版本 0.10.0
Go语言(版本1.x)
-
- 使用goenv进行golang安装的安装
-
- 在终端中键入以下命令:
-
- $ brew install goenv
-
- $ goenv -v
-
- goenv 1.23.2
确认可下载的go版本
在终端中键入命令:
$ goenv install -l
安装1.x版本的golang
在终端中键入命令:
$ goenv install 1.11.4
指定要使用的golang版本
在终端中键入以下命令:
$ goenv global 1.11.4
$ go version
go version go1.11.4 darwin/amd64
※ 确认可切换的golang版本
在终端中键入以下命令:
$ goenv versions
用法
-
- 使用sam工具来安装模板。
$ sam init –runtime go1.x –name hello
确认一下。
$ cd hello
$ tree
.
├── Makefile
├── README.md
├── hello-world
│ ├── main.go
│ └── main_test.go
└── template.yaml
修改Makefile文件,使其能够成功构建。
$ vim Makefile
~
all: deps clean build # <- 添加
deps:
# go get -u ./… # <- 注释掉
go get -u github.com/aws/aws-lambda-go/events # <- 添加
go get -u github.com/aws/aws-lambda-go/lambda # <- 添加 ~ 进行构建。 $ make 创建Api Gateway事件 当Api Gateway接收到请求时,将触发事件并传递给AWS Lambda函数。 创建表示此事件的JSON文件。 $ sam local generate-event apigateway aws-proxy > get_event.json
在本地运行lambda函数
运行sam local invoke命令,lambda函数将开始执行。
$ sam local invoke HelloWorldFunction –event get_event.json
在本地运行API Gateway
$ sam local start-api
~
访问http://127.0.0.1:3000/。
通过该URL访问并确认JSON。
http://127.0.0.1:3000/hello