我尝试了一下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

    1. 安装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)

    1. 使用goenv进行golang安装的安装

 

    1. 在终端中键入以下命令:

 

    1. $ brew install goenv

 

    1. $ goenv -v

 

    1. 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

用法

    1. 使用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

广告
将在 10 秒后关闭
bannerAds