網頁

2023/9/19

AWS Lambda 建立Go Lambda function

在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")
}

github


接者在專案根目錄下,以命令列執行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 bootstrapbootstrap打包為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訊息。




沒有留言:

張貼留言