400-638-8808
|
微信公眾號(hào)





穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無阻

協(xié)同辦公 資源管理

超大郵件 超級(jí)功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

Go 語言支持是 AWS 最近新增的。要使用 Go,您需要在創(chuàng)建 AWS Lambda 函數(shù)時(shí)從 AWS 控制臺(tái)選擇語言。在本章中,讓我們詳細(xì)了解 Go 語言中的 AWS Lambda 函數(shù)。
安裝 Go
首先,我們需要 Go 語言支持。在本節(jié)中,我們將通過以下詳細(xì)信息開始在 Go 中使用 AWS Lambda。這是 Go 下載的官方網(wǎng)站:https://golang.org/dl/

在 Windows 上安裝
請(qǐng)注意,對(duì)于 Windows,有 32 位和 64 位下載可用。下載 zip 文件并解壓縮內(nèi)容并將其存儲(chǔ)在您選擇的目錄中。
添加在 ControlPanel---> System---> Advanced system settings 中可用的環(huán)境變量。




Linux 和 Mac OS 的安裝
要在 Linux 和 Mac OS 上安裝軟件包,請(qǐng)按照如下所示的說明進(jìn)行操作-
解壓縮包并將其存儲(chǔ)在位置 /usr/local/go,F(xiàn)在,將 /usr/local/go/bin 添加到 PATH 環(huán)境變量中。可以使用 /etc/profile 或 $HOME/.profile 來完成。
為此,您可以使用以下命令
export PATH=$PATH:/usr/local/go/bin
要為 Windows、Linux 和 mac 添加 AWS 支持,請(qǐng)?jiān)谀?git 命令行中使用以下命令-
go.exe get-u github.com/aws/aws-lambda-go/lambda
go.exe get-u github.com/aws/aws-lambda-go/lambdacontext
go.exe get-u github.com/aws/aws-lambda-go/cmd/build-lambda-zip
要編譯代碼 Windows/Linux/Mac,請(qǐng)使用以下命令-
GOOS=linux GOARCH=amd64 go build-o main main.go
%GOPATH%\bin\build-lambda-zip.exe-o main.zip main
使用 GO 的 AWS Lambda 函數(shù)
當(dāng)構(gòu)建給出可執(zhí)行文件時(shí),Go 中返回的程序。下面是一個(gè)簡單的 Go 程序,支持 AWS Lambda。我們需要導(dǎo)入 github.com/aws/aws-lambda-go/lambda,因?yàn)樗哂?Lambda 編程功能。AWS Lambda 的另一個(gè)重要需求是處理程序。
Main.go
// main.go
package main
import (
"github.com/aws/aws-lambda-go/lambda"
)
func hello() (string, error) {
return "Hello Lambda", nil
}
func main() {
// Make the handler available for Remote Procedure Call by AWS Lambda
lambda.Start(hello)
}
注意 Go 程序的執(zhí)行從 main where lambda 開始。 start 是用處理函數(shù)調(diào)用的。觀察下面顯示的代碼-
func main() {
// Make the handler available for Remote Procedure Call by AWS Lambda
lambda.Start(hello)
}
現(xiàn)在,讓我們使用 Go 命令執(zhí)行上述文件,然后壓縮可執(zhí)行文件。
我們一直使用的文件結(jié)構(gòu)如下所示-


要編譯代碼 Windows/Linux/Mac,請(qǐng)使用以下命令-
GOOS=linux GOARCH=amd64 go build-o main main.go
%GOPATH%\bin\build-lambda-zip.exe-o main.zip main
然后,登錄 AWS 控制臺(tái)并使用 Go 作為運(yùn)行時(shí)創(chuàng)建 Lambda 函數(shù)-

帶有 Go 的 Lambda 函數(shù)處理程序
Handler 是 Go 程序開始執(zhí)行的地方。從對(duì) lambda.start 的 main 調(diào)用開始,使用處理函數(shù)調(diào)用執(zhí)行。請(qǐng)注意,要添加的處理程序?qū)⑹?nbsp;main。
觀察這里的代碼以了解-
func main() {
// Make the handler available for Remote Procedure Call by AWS Lambda
lambda.Start(hello)
}
按照下面給出的屏幕截圖進(jìn)行操作-




帶有 Go 的上下文對(duì)象
Go 中的 AWS Lambda 為上下文提供了以下全局變量和屬性。
MemoryLimitInMB-內(nèi)存限制,以 MB 為單位,在 aws lambda 中配置。FunctionName-aws lambda 函數(shù)的名稱。FunctionVersion-aws lambda 函數(shù)執(zhí)行的版本。LogStreamName-cloudwatch 日志流名稱。LogGroupName-cloudwatch 組名。
AwsRequestID
這是您在調(diào)用 AWS Lambda 函數(shù)時(shí)獲得的 AWS 請(qǐng)求 ID。
客戶端上下文
這包含有關(guān)通過 AWS 移動(dòng)開發(fā)工具包調(diào)用時(shí)的客戶端應(yīng)用程序和設(shè)備的詳細(xì)信息。它可以為空?蛻舳松舷挛奶峁┛蛻舳 ID、應(yīng)用程序名稱、版本名稱、版本代碼和應(yīng)用程序包名稱等詳細(xì)信息。
InvokedFunctionArn
被調(diào)用函數(shù)的 ARN。不合格的 ARN 執(zhí)行 $LATEST 版本,別名執(zhí)行它指向的函數(shù)版本。
身份
當(dāng)與 AWS 移動(dòng)開發(fā)工具包一起使用時(shí),它提供了有關(guān) Amazon Cognito 身份提供商的詳細(xì)信息。
添加到 main.go 以打印上下文詳細(xì)信息的更改-
// main.go
package main
import (
"context"
"log"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-lambda-go/lambdacontext"
)
func hello(ctx context.Context) (string, error) {
lc, _ := lambdacontext.FromContext(ctx);
log.Print(lc);
log.Print(lc.AwsRequestID);
log.Print(lc.InvokedFunctionArn);
return "Hello Lambda", nil
}
func main() {
// Make the handler available for Remote Procedure Call by AWS Lambda
lambda.Start(hello)
}
我們需要導(dǎo)入 log 和 lambda 上下文 以在 Go 中使用它。上下文詳細(xì)信息如下-
func hello(ctx context.Context) (string, error) {
lc, _ := lambdacontext.FromContext(ctx);
log.Print(lc);
log.Print(lc.AwsRequestID);
log.Print(lc.InvokedFunctionArn);
return "Hello Lambda", nil
}
您可以在測試上述代碼時(shí)觀察到以下輸出-

記錄數(shù)據(jù)
使用 Go,您可以使用 log 或 fmt 模塊記錄數(shù)據(jù),如下所示-
// main.go
package main
import (
"log"
"fmt"
"github.com/aws/aws-lambda-go/lambda"
)
func hello() (string, error) {
log.Print("Hello from Lambda Go using log");
fmt.Print("Hello from Lambda Go using fmt");
return "Hello Lambda", nil
}
func main() {
// Make the handler available for Remote Procedure Call by AWS Lambda
lambda.Start(hello)
}
相同的輸出如下所示-

在 CloudWatch 中檢查日志
您也可以在 CloudWatch 中查看日志。為此,請(qǐng)轉(zhuǎn)到 AWS 服務(wù)并選擇 cloudwatch 并單擊左側(cè)的 Logs。現(xiàn)在,在列表中搜索 Lambda 函數(shù)以查看日志-

功能錯(cuò)誤
您可以使用錯(cuò)誤模塊在 AWS Lambda 中創(chuàng)建自定義錯(cuò)誤處理,如下面的代碼所示-
// main.go
package main
import (
"errors"
"github.com/aws/aws-lambda-go/lambda"
)
func hello() error {
return errors.New("There is an error in the code!")
}
func main() {
// Make the handler available for Remote Procedure Call by AWS Lambda
lambda.Start(hello)
}
上面顯示的代碼的輸出如下所示-

作為AWS核心代理商,選擇天.下.數(shù).據(jù)的優(yōu)勢
1、專屬客服協(xié)助注冊AWS,或提供注冊好的賬號(hào)直接使用
2、支持收U等多幣種支付代付,無額外服務(wù)費(fèi)用
3、AWS多種產(chǎn)品類型,更高產(chǎn)品租賃權(quán)限
4、針對(duì)大客戶,AWS專屬折扣優(yōu)惠
5、7x24小時(shí)專屬客服,在線解答各種疑問
AWS亞馬遜云代理商哪家好?推薦找天 下 數(shù) 據(jù),可享受高額折扣、高額返現(xiàn)優(yōu)惠,詳詢電話40 0-63 8-88 08 官網(wǎng):http://m.51huadong.com/2023/aws.asp
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國服務(wù)器 韓國服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺(tái)灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國云主機(jī) 韓國云主機(jī) 新加坡云主機(jī) 臺(tái)灣云主機(jī) 日本云主機(jī) 德國云主機(jī) 全球云主機(jī)高防專線
海外高防IP 海外無限防御 SSL證書 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊(duì)建設(shè) 加入天下數(shù)據(jù) 媒體報(bào)道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號(hào)
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務(wù)器、美國服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證》 ISP證:粵ICP備07026347號(hào)
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營)聯(lián)合版權(quán)
深圳總部:中國.深圳市南山區(qū)深圳國際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號(hào)建安商業(yè)大廈7樓
7×24小時(shí)服務(wù)熱線:4006388808香港服務(wù)電話:+852 67031102
本網(wǎng)站的域名注冊業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品