在AWS console建立Lambda Go function。
建立Lambda function
登入AWS console,選擇服務區域(region)。
在上方搜尋欄搜尋"Lambda",點選[Lambda]進入Lambda dashboard。
在Lambda dashboard左側選單點選[Functions]。
然後點選[Functions]頁面右上方的[Create function]按鈕開始建立Lambda。
在[Create function]頁面,選擇[Author from scratch]。
- [Function name] - 填入lambda function的名稱。
- [Runtime] - Lambda執行的語言,選擇[Go 1.x]
- [Architecture] - 平台架構,選擇[x86_64]。(也可選[arm64],但編譯Go程式時的build指令有點差異)
按最下面的[Create]按鈕完成。
Function建立好後,點選Function下面的[Code]頁籤,找到[Runtime settings]區塊,點選[Edit]按鈕。
在[Edit runtimes settins]頁面,將[Handler]欄位的內容改為[bootstrap],按[Save]儲存。"bootstrap"為待會要上傳的zip中的Go執行檔名稱。
準備Go執行程式
範例環境:
- macOS Ventura 13.0.1
- Go 1.19
接下來要準備一個Go應用程式,然後編譯為可執行檔並上傳到剛建立的Lambda function。
下載Go Lambda SDK,在專案根目錄下執行go get github.com/aws/aws-lambda-go/lambda
。
~/../go-demo% go get github.com/aws/aws-lambda-go/lambda
go: downloading github.com/aws/aws-lambda-go v1.41.0
go: added github.com/aws/aws-lambda-go v1.41.0
Go程式內容如下。
main.go
package main
import (
"context"
"fmt"
"github.com/aws/aws-lambda-go/lambda"
)
func main() {
lambda.Start(HandleRequest)
}
func HandleRequest(ctx context.Context) {
fmt.Println("Hello World")
}
接者在專案根目錄下,以命令列執行GOOS=linux GOARCH=amd64 go build -tags lambda.norpc -o bootstrap main.go
將Go程式編譯為可執行檔。
~/../go-demo% GOOS=linux GOARCH=amd64 go build -tags lambda.norpc -o bootstrap main.go
編譯後可在專案根目錄下看到可執行檔bootstrap
。
接著輸入zip demo-func-1.zip bootstrap
將bootstrap
打包為demo-func-1.zip
,為待會要上傳到Lambda function的檔案。
~/../go-demo% zip demo-func-1.zip bootstrap
updating: bootstrap (deflated 43%)
上傳Go執行檔到Lambda
Lambda function下點選[Code]頁籤,在[Code source]區塊右側的[Upload from]選單點選[.zip file],上傳剛剛的demo-func-1.zip
。
測試
Lambda function下點選[Test]頁籤,點擊右側的[Test]按鈕測試。
測試成功如下,可以看到印出的log訊息。
沒有留言:
張貼留言