如何在 Go 中創建和部署 AWS Lambda 函數

AWS Lambda 是一個無服務器計算平臺,您可以使用自己喜歡的編程語言編寫代碼,無需擔心設置虛擬機。


您只需為 Lambda 函數的調用次數和運行時間(毫秒)付費。

我們大多數人都了解 JavaScript 和 Python,但它們的內存效率不如編譯型語言。我們可以使用像 Go 這樣易于使用的編譯型語言。

在 AWS Lambda 中使用 Go 的優勢


雖然 AWS Lambda 支持 Java、.NET、NodeJS、Python、Amazon Linux 和 Ruby 等多種運行時,但 Golang 的優勢在于:

  • 啟動速度更快
  • 編譯型語言
  • 類型安全的運行時
  • 低內存占用

憑借這些優勢,您可以降低成本(同時提供更快的體驗),并讓您的客戶滿意。

在您的操作系統中安裝 Go

在 MacOS 中通過 Homebrew 安裝 Go

brew install go

創建main.go文件

package mainimport ("log""context""github.com/aws/aws-lambda-go/events""github.com/aws/aws-lambda-go/lambda"
)func handler(ctx context.Context, request events.APIGatewayProxyRequest) error {log.Println("HelloWorld from Golang Lambda")return nil
}func main() {lambda.Start(handler)
} 

安裝 Golang 依賴項

go mod init example.com/demo
go get github.com/aws/aws-lambda-go/events
go get github.com/aws/aws-lambda-go/lambda

?構建并編譯 Lambda Go 函數


為 arm64 Linux 編譯 Go 代碼
我們將架構設置為 arm64,操作系統設置為 Linux

GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o bootstrap main.go

創建AL2023運行時lambda 函數


壓縮 Go 二進制文件


使用預編譯的 zip 工具。

zip lambda-handler.zip bootstrap

?創建Makefile

在根目錄中創建一個名為 Makefile 的文件。

請修改函數名稱和區域的參數

export GOOS=linux
export GOARCH=arm64
export CGO_ENABLED=0
.DEFAULT_GOAL := deploydeploy:go build -o bootstrapzip -r lambda-handler.zip bootstrapaws lambda update-function-code --function-name "my-go-lambda" --zip-file fileb://lambda-handler.zip --region="ap-southeast-2" | jq .   

運行 Makefile

運行以下 CLI 命令來構建、壓縮和部署我們的示例 Lambda

ninjamac@ip-192-168-1-2 lambda % make deploygo build -o bootstrap
zip -r lambda-handler.zip bootstrap
updating: bootstrap (deflated 47%)
aws lambda update-function-code --function-name "my-go-lambda" --zip-file fileb://lambda-handler.zip --region="ap-southeast-2" | jq .   
{"FunctionName": "my-go-lambda","FunctionArn": "arn:aws:lambda:ap-southeast-2:654654314383:function:my-go-lambda","Runtime": "provided.al2023","Role": "arn:aws:iam::654654314383:role/service-role/my-go-lambda-role-0o60l55q","Handler": "hello.handler","CodeSize": 5873979,"Description": "","Timeout": 3,"MemorySize": 128,"LastModified": "2025-04-20T02:49:22.000+0000","CodeSha256": "eM4bArP7poWFjF/wSTdr7ZQWtKBU3dievqixr8aBfzY=","Version": "$LATEST","TracingConfig": {"Mode": "PassThrough"},"RevisionId": "a0910405-bd14-4f8c-8385-793aa5bd7d52","State": "Active","LastUpdateStatus": "InProgress","LastUpdateStatusReason": "The function is being created.","LastUpdateStatusReasonCode": "Creating","PackageType": "Zip","Architectures": ["arm64"],"EphemeralStorage": {"Size": 512},"SnapStart": {"ApplyOn": "None","OptimizationStatus": "Off"},"RuntimeVersionConfig": {"RuntimeVersionArn": "arn:aws:lambda:ap-southeast-2::runtime:d8eddd048acf22c40d1c217557a9e2dc2f1d970bc73ed0ad914c201b5f1c7a78"},"LoggingConfig": {"LogFormat": "Text","LogGroup": "/aws/lambda/my-go-lambda"}
}

訪問該lambda URL

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79753.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79753.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79753.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32配置系統時鐘

1、STM32配置系統時鐘的步驟 1、系統時鐘配置步驟 先配置系統時鐘,后面的總線才能使用時鐘頻率 2、外設時鐘使能和失能 STM32為了低功耗,一開始是關閉了所有的外設的時鐘,所以外設想要工作,首先就要打開時鐘,所以后面…

[安全實戰]逆向工程核心名詞詳解

逆向工程核心名詞詳解 一、調試與執行類 1. 斷點(Breakpoint) 定義:在代碼中設置標記,使程序執行到此處時暫停類型: 普通斷點:通過INT3指令實現條件斷點:滿足特定條件時觸發內存斷點&#xf…

Mac mini 安裝mysql數據庫以及出現的一些問題的解決方案

首先先去官網安裝一下mysql數據庫,基本上都是傻瓜式安裝的流程,我也就不詳細說了。 接下來就是最新版的mysql安裝的時候,他就會直接讓你設置一個新的密碼。 打開設置,拉到最下面就會看到一個mysql的圖標: 我設置的就是…

聚寬策略----國九條后中小板微盤小改,年化135.40%

最近在研究的聚寬策略,一般技術分析的我直接轉qmt了,財務因子有一點麻煩,我直接利用我開發強大的服務器系統,直接讀取信號,最近在優化一下系統,最近在開發對接bigquant的交易系統,完成了api數據…

C語言狀態字與庫函數詳解:概念辨析與應用實踐

C語言狀態字與庫函數詳解:概念辨析與應用實踐 一、狀態字與庫函數的核心概念區分 在C語言系統編程中,"狀態字"和"庫函數"是兩個經常被混淆但本質完全不同的概念,理解它們的區別是掌握系統編程的基礎。 1. 狀態字&…

End-to-End從混沌到秩序:基于LLM的Pipeline將非結構化數據轉化為知識圖譜

摘要:本文介紹了一種將非結構化數據轉換為知識圖譜的端到端方法。通過使用大型語言模型(LLM)和一系列數據處理技術,我們能夠從原始文本中自動提取結構化的知識。這一過程包括文本分塊、LLM 提示設計、三元組提取、歸一化與去重,最終利用 NetworkX 和 ipycytoscape 構建并可…

Leetcode 3523. Make Array Non-decreasing

Leetcode 3523. Make Array Non-decreasing 1. 解題思路2. 代碼實現 題目鏈接:3523. Make Array Non-decreasing 1. 解題思路 這一題思路上來說就是一個棧的問題,就是從后往前依次考察每一個元素,顯然,當前位置要么被舍棄&…

探秘STM32如何成為現代科技的隱形引擎

STM32單片機原理與應用 前言:微型計算機的硅腦 在我們身邊的每一個智能設備中,都隱藏著一個小小的"硅腦"——單片機。它們體積微小,卻能執行復雜的運算和控制功能,就像是現代科技世界的"神經元"。STM32系列…

機制的作用

“機制”是一個廣泛使用的概念,其含義和應用范圍因領域而異。在不同的學科和實際應用中,機制有著不同的定義和功能。以下從幾個主要領域對“機制”進行詳細解釋: 一、自然科學中的機制 (一)物理學 定義 在物理學中&…

prim最小生成樹+最大生成樹【C++】板子題

什么是最小生成樹? 在一給定的無向圖G (V, E) 中,(u, v) 代表連接頂點 u 與頂點 v 的邊,而 w(u, v) 代表此的邊權重,若存在 T 為 E 的子集(即)且為無循環圖,使得的 w(T) 最小,則此 …

讀書筆記--MySQL索引

索引(在 MySQL 中也叫做“鍵(key)”)是存儲引擎用于快速找到記錄的一種數據結構。 索引對于良好的性能非常關鍵。尤其是當表中的數據量越來越大時,索引對性能的影響愈發重要。在數據量較小且負載較低時,不恰當的索引對性能的影響可能還不明顯&#xff0c…

VS Code 遠程連接服務器:Anaconda 環境與 Python/Jupyter 運行全指南。研0大模型學習(第六、第七天)

VS Code 遠程連接服務器:Anaconda 環境與 Python/Jupyter 運行全指南 在使用 VS Code 通過 SSH 遠程連接到服務器進行開發時,尤其是在進行深度學習等需要特定環境的工作時,正確配置和使用 Anaconda 環境以及理解不同的代碼運行方式非常關鍵。…

字節頭條golang二面

docker和云服務的區別 首先明確Docker的核心功能是容器化,它通過容器技術將應用程序及其依賴項打包在一起,確保應用在不同環境中能夠一致地運行。而云服務則是由第三方提供商通過互聯網提供的計算資源,例如計算能力、存儲、數據庫等。云服務…

數據結構和算法(七)--樹

一、樹 樹是我們計算機中非常重要的一種數據結構,同時使用樹這種數據結構,可以描述現實生活中的很多事物,例如家譜、單位的組織架構、等等。 樹是由n(n>1)個有限結點組成一個具有層次關系的集合。把它叫做"樹"是因為它看起來像一…

狀態管理最佳實踐:Provider使用技巧與源碼分析

狀態管理最佳實踐:Provider使用技巧與源碼分析 前言 Provider是Flutter官方推薦的狀態管理解決方案,它簡單易用且功能強大。本文將從實戰角度深入講解Provider的使用技巧和源碼實現原理,幫助你更好地在項目中應用Provider進行狀態管理。 基…

使用 NEAT 進化智能體解決 Gymnasium 強化學習環境

使用 NEAT 進化智能體解決 Gymnasium 強化學習環境 0. 前言1. 環境定義2. 配置 NEAT3. 解決強化學習問題小結系列鏈接0. 前言 在本節中,我們使用 NEAT 解決經典強化學習 (reinforcement learning, RL) Gym 問題。但需要注意的是,我們用于推導網絡和解決方程的方法不是 RL,而…

Pandas高級功能

在數據科學與機器學習的廣闊天地中,Pandas宛如一把瑞士軍刀,以其強大的數據處理和分析能力,成為眾多數據從業者的得力助手。從基礎的數據讀寫、清洗到復雜的數據聚合、轉換,Pandas的功能豐富多樣。本文將深入探索Pandas的一些高級…

英語學習4.15

amateur amateur 🔤 讀音:/?m?t?r/ 或 /?m?t??r/ ? 詞性:名詞 / 形容詞 ? 中文釋義: (名詞)業余愛好者 ??👉 指不是以此為職業的人,通常出于興趣而從事某項活動。 ??…

Java開發軟件

Main.java // 主類,用于測試學生管理系統 public class Main { public static void main(String[] args) { StudentManagementSystem sms new StudentManagementSystem(); // 添加學生 sms.addStudent(new Student(1, "Alice", 20)…

多Agent框架及協作機制詳解

文章目錄 一、多智能體系統介紹1.1 多智能體系統定義1.2 多智能體協作1.3 協作類型1.4 協作策略1.5 通信結構1.6 協調與編排 1.3 多智能體與單智能體對比1.4 應用場景 二、多Agent開發框架AutoGenMetaGPTLangGraphSwarmCrewAI 三、多智能體協作方式3.1 MetaGPT:SOP驅…