Help us understand the problem. What is going on with this article?

Serverless Framework for AWS Lambda Development

0 .Intro

Serverless Framework

The complete solution for building & operating serverless applications.

就自己這陣子的使用經驗上來看,我覺得這樣的敘述還算名符其實。

目前最主要會用場景為開發在自己的MBPR 上利用Golang 開發AWS Lambda,利用Serverless Framework CLI所提供的功能來開發,部署以及在本機做測試,整體的流暢度滿高的。 雖然Serverless還有提供其他Monorting, integration或policy目前還沒有使用到,但是整理的使用經驗大勝SAM CLI,特別是早期被SAM對於Golang的支援踩到太多的坑了。

除了AWS之外,其他serverless的部署對象目前有都有支援。更多完整可以參考Serverless Framework

真的要說目前Serverless Framework有什麼缺點,我覺得是名字取得不好XD 造成要SEO/search的結果不佳。

1. Perquisite & Installation

在開始之前,要先確認你的電腦椅已經設定好AWS CLI相關的configuration,確認沒有問題後,我們就可以來安裝Serverless Framework。

# install serverless cli
curl -o- -L https://slss.io/install | bash


# testing 
sls --version

# upgrade to latest version
sls upgrade 

2. Create New Lambda Service

接著,我們可以透過 Serverless framework 提供的 template 來完成,-t參數代表template,目前這邊我們選用的是採用 go mod 的 template,如果你的專用目前是用go dep來管理的話,你也可以選用 aws-go-dep 這個template來建立 hello world。

-p 代表的是Path,command執行完成後,Serverless framework會幫我們將產生的檔案放在新建立的myService資料夾中。

sls create -t aws-go -p myService

cd myService

切換到myService下後,你可以看到我們從template產生的兩個lambda的範例,一個hello一個world分別放在不同的資料夾中,並且可以稍微瀏覽一下兩隻lambda裡面的code,分別會回傳不同的hello world訊息。

3. Build & Deploy

Serverless Framework很貼心的已經幫我們處理好Makefile,因此我們需要先init go mod,接著透過make build的command來幫我們產生binary。

#/myService
go mod init helloworld
make build

確認/bin資料夾中有成功產生hello跟world兩個檔案後,在deploy之前有個小小需要注意的地方,如果你目前的aws config中的region不是us-east-1 的話,記得要修改serverless.yml中region的設定。

# serverless.yml
region: <YOUR AWS CONFIG REGION>

sls deploy

4. Testing Your Lambda

部署完成後,我們可以分別來測試這兩隻不同的lambda,-f代表要執行的function。

  1. lambda hello
    sls invoke -f hello


    {
        "message": "Go Serverless v1.0! Your function executed successfully!"
    }
  1. lambda world
    sls invoke -f world

    {
        "message": "Okay so your other function also executed successfully!"
    }

有興趣的人可以進一步登入到AWS web console中,便可以發現Serverless Framwork在剛剛一行command中,已經幫我們部署了API Gateway+lambda,而且這些設定指示在serverless.yml中functions > hello > events > http的config便可以完成,其他我們在lambda中常用的Trigger,在被註解掉的event sample中也都已經給了範例。

Hello World的介紹屆先到這邊,之後的篇章再來分享透過Serverless Framework實作的其他lambda。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした