AWS:將 go1.x 執行時間遷移到 al2 以部署 Lambda 函數

AWS:將 go1.x 執行時間遷移到 al2 以部署 Lambda 函數

我正在嘗試從 go1.x 遷移到 AL2 運行時來部署 Lambda 函數,但我在如何執行此操作時遇到了麻煩。我使用 Serverless Framework 與 make 結合進行部署。這是我目前使用的 Makefile:

go_apps = bin/func1 bin/func2 bin/fun3

bin/% : functions/%.go functions/common.go
    env GOOS=linux go build -ldflags="-s -w" -o $@ $< functions/common.go

build: $(go_apps)

clean:
    rm -rf ./bin

deploy:
    sls deploy --verbose

install: build deploy

任何幫助將不勝感激


更新: 我發現這篇文章應該有助於遷移

當我實施它並確保它按預期工作時,我會報告


更新2:

我能夠使用 SAM local 在新的 AL2 運行時中成功測試我的功能使用此 AWS 範例 AL2 使用 Go 實現。我將 common.go 檔案移至新的儲存庫,並使用它成功建立了一個 go 模組(然後將其匯入到我的函數中)。這只是一個開始,因為我還沒有透過無伺服器部署我的功能,但這可能對其他人有幫助。

答案1

我發現您實際上可以使用兩個(或更多)檔案進行 go 構建,並將其運行/部署到 AL2 運行時。確保您的第二個檔案(在我的例子中為 common.go)具有可公開存取的函數/結構。另外,請確保將 github.com/aws/aws-lambda-go/lambda 更新至最新版本。並使用這個github 倉庫範例幫助您設計無伺服器模板。

這是我的 Makefile 的範例,用於使用無伺服器框架部署到 AWS Lambda:

go_bootstrap = func1 func2 func3 \

build: 
    for n in $(go_bootstrap); \
    do \
        echo "$$n"; \
        env GOOS=linux go build -o ./build/"$$n"/bootstrap functions/common.go functions/"$$n".go; \
        zip -j ./build/zip/"$$n".zip ./build/"$$n"/bootstrap; \
    done

deploy:
    sls deploy --verbose

install: build deploy

相關內容