AWS Lambda已支援用Go語言編寫的無伺服器應用
Go語言是亞馬遜最近才在AWS Lambda提供支援的語言之一,其它語言套件括Node.js、Python、Java和C#。
為了讓你的Go代碼能夠在AWS上部署,你的代碼首先必須位於一個處理常式 (handler) 函數內,然後AWS會將這個函數傳入lambda.Start()。在被調用時,lambda.Start()並不產生傳回值,它會與Lambda內部端點進行通訊,並將調用請求傳遞給處理常式。該處理常式函數可能會有0-2個參數,其中包括請求對象,並且該函數可能會返回0-2個值,其中包括一個error對象,例如:
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello(request Request) (string, error) { return "Hello!", nil}func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello)}
AWS要求編寫的Go代碼必須能在AWS Lambda for Linux裡使用,並且需要將代碼壓縮為zip檔案,以便於在AWS Lambda中進行部署。你可以運行以下代碼來實現它:
GOOS=linux go build -o main main.gozip main.zip main
該zip檔案的名字必須與被部署的Lambda函數的Handler配置屬性相匹配。
在代碼被壓縮為zip檔案後,你就可以通過以下AWS CLI來部署它了:
$ aws lambda create-function \--region us-west-1 \--function-name HelloFunction \--zip-file fileb://./main.zip \--runtime go1.x \--tracing-config Mode=Active--role arn:aws:iam:::role/ \--handler main
此外,AWS還為Go提供了AWS X-Ray。AWS X-Ray是一組類庫,它可以產生跟蹤資料,以便於X-Ray守護進程(daemon)分析和調試Go函數。
為了讓開發人員用Go來開發AWS Lambda函數更加簡便,亞馬遜公布了一個GitHub資產庫,其中包含大量庫、樣本和工具。你可以點擊此連結擷取更多有關如何在AWS上測試、構建和部署Go代碼的資訊。
查看英文原文:AWS Lambda Now Supports Go for Serverless Applications