AWS Lambda 上的 .NET 工作負載

模組 2

模組 2:適用於 .NET 開發的工具

 學習模組

AWS 提供多種工具,協助您開發適用於 .NET 的 Lambda 函數。所有工具均為免費,可以直接安裝到您首選的 IDE 或您選擇的命令列如果您的電腦已設定 AWS 帳戶,則無需設定這些工具。

適用於 AWS Lambda 的 .NET 工具可用於 Visual Studio (僅限 Windows)、Visual Studio Code 和 Rider。命令列工具可用於 Windows、Linux 和 Mac。IDE 與作業系統之間的支援級別各不相同。本模組提供了可用工具的摘要以及相關下載的連結。

 完成時間

60 分鐘 

AWS Toolkit for Visual Studio

截至 2022 年 5 月,AWS Toolkit for Visual Studio 僅適用於 Windows。安裝之後,該工具包將幫助您對其進行設定,以存取您的 AWS 帳戶。

透過熟悉的使用者介面,該工具包允許您透過 Visual Studio 中的圖形介面開發、偵錯、部署、更新和測試您的 Lambda 函數。該工具包現在可供 Visual Studio 2022/2019/2017 下載。

安裝

在 Visual Studio 中,轉到「Extension」功能表,然後選取「Manage Extensions」。在右側的搜尋方塊中,鍵入「AWS Toolkit」。在結果窗格中,選取「AWS Toolkit for Visual Studio」擴展程式,然後按一下 Download。按照提示安裝擴展程式,您可能需要重新開機 Visual Studio。

如果您願意,您可以直接下載 AWS Toolkit,存取針對 AWS Toolkit for Visual Studio 的文件。

概覽和主要功能

關於 Lambda 服務,該工具包提供了兩組關鍵功能、Lambda 函數的專案範本,以及用於協助部署、管理和測試/調用 Lambda 函數的工具。除此之外,該工具包還允許您管理其他 AWS 資源並將應用程式部署到其他類型的 AWS 基礎架構,例如 AWS Fargate、AWS App Runner 和 AWS Elastic Beanstalk (本課程不涉及這些內容)。

該工具包新增了許多 Lambda 專案範本,旨在協助您建立各種 Lambda 函數。

最簡單的範本採用一個字串,並返回該字串的大寫版本。這是個不錯的入門範本,因為它簡單、易於部署和測試。只需幾分鐘,您就可以在 AWS 上執行 .NET Lambda 函數,向其傳送請求並獲得回應。

更複雜的是,有一個範本提供完整的 .NET 6 Web 應用程式 (帶網頁和 API 控制器)。部署該範本之後,還將為您部署和設定所需的基礎架構,以便透過 Web 進行存取。

如果您願意,有容器專案範本可用。請注意,您必須在電腦上安裝 Docker 才能使用這些範本。要了解您為什麼選擇帶 Lambda 函數的容器映像,請參閱模組 4 中的「為您選擇執行期」部分。

對您的 Lambda 函數進行單元測試與測試任何其他程式碼一樣重要。大多數專案範本包含測試專案,該專案使用 xUnit 測試原始程式碼項目中的程式碼。這樣的話,您可以輕鬆開始使用單元測試。

正如上面所述,在 Visual Studio 中,您還可以將您的函數發佈到 AWS Lambda 服務。發佈功能負責組建套裝軟體、上傳到 Lambda 服務、套用許可權、建立 API Gateway 端點,以及讓程式碼執行並可供調用。您只需編寫程式碼即可。

該工具包的另一項功能是 AWS Explorer,它允許您查看和管理許多 AWS 資源,例如 DynamoDB、S3、SNS、SQS 佇列、EC2,當然還有 Lambda 函數。

要開啟 AWS Explorer,請轉到 View 功能表並選取 AWS Explorer

關於 Lambda 函數,AWS Explorer 允許您:

  • 選擇一個區域。
  • 查看和管理您的 Lambda 函數。
  • 在 AWS 上調用 Lambda 函數,傳遞任何必要的參數,然後查看回應。該工具提供範例輸入,用於類比來自各種其他 AWS 服務的調用。當您組建由其他服務的事件 (例如在 S3 上建立的檔案) 觸發的 Lambda 函數時,這非常有用。
  • 偵錯 Lambda 函數的本地執行版本。
  • 設定可觸發 Lambda 函數的服務。
  • 查看由 Lambda 函數生成的日誌。

要從該工具包中調用 Lambda 函數,請開啟 AWS Explorer,展開 Lambda 部分,在要執行的 Lambda 函數上按一下右鍵,然後選取 View Function

在此處,您可以從下拉清單中選擇一個範例請求。 這些範例允許您類比來自其他 AWS 服務 (例如 API Gateway、S3、SNS 等) 的調用。這樣的話,您可以直接輕鬆地測試由其他服務的事件調用的 Lambda 函數。

或者,您可以使用自己的請求。

除上述內容外,您可以透過終端使用所有與 Lambda 相關的命令列工具。

如果您剛剛接觸 AWS,那麼 Toolkit for Visual Studio 是最好的入門方式。它具有所有可用工具包的大多數功能,並且容易偵錯和執行部署。AWS Toolkit for Visual Studio 還可與免費提供的 Visual Studio 社區版配合使用。對於剛接觸 AWS 的開發人員來說,該工具包與 AWS 上的免費方案是不錯的組合。

AWS Toolkit for Visual Studio Code

AWS Toolkit for Visual Studio Code (VS Code) 適用於執行 VS Code 的所有作業系統 (Windows、Linux 和 Mac)。該工具包在所有三個作業系統上提供一致的體驗。

雖然 AWS Toolkit for Visual Studio Code 在功能方面不如 AWS Toolkit for Visual Studio 全面,但它允許您瀏覽 AWS 上的資源並與之互動。

您可以瀏覽 S3 儲存貯體 (並編輯檔案!),調用 API Gateway 端點,從 Amazon Elastic Container Registry (ECR) 部署,在 AWS 上調用 Lambda 函數,並且在本地對它們進行偵錯 (需要 dotnet 工具,請見下文)。有關其功能的完整清單,請參閱 AWS Toolkit for Visual Studio Code 文件。

您還可以將所有可用的 AWS 命令列工具與 VS Code 配合使用。這很可能是您透過 VS Code 與 AWS 進行互動的方式。借助命令列工具,您可以靈活地管理每項 AWS 服務。

安裝

在主邊列中,按一下「擴充功能」圖示。在開啟的搜尋列中,鍵入「aws toolkit」,您應該會在清單頂部或附近看到 AWS Toolkit。按一下 Install。您可能需要重新開機 VS Code。

概覽和主要功能

您可以透過 VS Code 擴充功能市場來新增 AWS Toolkit for VS Code,也可以直接從 Visual Studio 市場上的 AWS Toolkit 頁面中下載。

如果您已經在電腦上設定 AWS 帳戶,則工具包將自動使用該帳戶連接到 AWS。

AWS 圖示將在 VS Code 視窗的主邊列中顯示。在此處,您可以看到工具包可以存取的所有服務。

該工具包不包括 Visual Studio Toolkit 之類的 Lambda 專案範本。相反,您可以透過命令行使用 dotnet new ... 命令建立新的 Lambda 函數。豐富的範本可供使用。這些範本將協助您非常快速地開始使用 AWS Lambda 函數。dotnet CLI 範本的安裝指示如下。

關於 Lambda 函數,AWS Explorer 允許您:

  • 在 AWS 上調用 Lambda 函數,傳遞任何必要的參數,然後查看回應。該工具提供範例輸入,用於模擬來自觸發 Lambda 的各種其他 AWS 服務的調用。
  • 使用 AWS .NET Mock Lambda Test Tool 在本地偵錯 Lambda 函數。
  • 上傳已組建的 .NET Lambda 函數的 Zip 封存。
  • 查看 Lambda 函數生成的日誌 (透過 CloudWatch Logs)。

要從工具包中調用 Lambda 函數,請開啟 AWS Explorer,展開 Lambda 部分,按右鍵要執行的 Lambda 函數,然後選取「Invoke on AWS」。

這樣會開啟一個新視窗,在其中您可以選取用於調用函數的請求負載。

或者,您可以編寫自己的請求負載。VS Code 輸出選項卡會顯示回應負載。

除上述內容外,您可以透過終端將所有與 Lambda 相關的命令列工具與 VS Code 結合使用。特別是,在 VS Code 中使用 Lambda 函數時,dotnet lambda 命令尤為有用。關於詳細資訊和安裝說明,請參閱下面的「適用於 .NET CLI 的 AWS 擴展程式 (dotnet lambda ...)」部分。

AWS Toolkit for Rider

AWS Toolkit for Rider 是一款適用於 Rider 的外掛程式,可幫助您組建、查看和管理 AWS 資源。它在功能方面與 AWS Toolkit for VS Code 類似,但它包含各種適用於 .NET 的專案範本,這些範本可協助您快速開始開發 Lambda 函數。

安裝

要安裝 AWS Toolkit for Rider,請開啟「File」功能表,然後按一下「Settings」和「Plugins」。搜尋 AWS Toolkit 並安裝。

如果您已經在電腦上設定 AWS 帳戶,則工具包將自動連接到 AWS。

安裝之後,您將有一系列新的 AWS Lambda 函數範本可使用。

概覽和主要功能

要開啟 AWS Explorer,請依次轉到「View」功能表和「Tool Windows」,然後選取「AWS Explorer」。

在 AWS Explorer 中,您可以對 Lambda 函數執行以下操作:

  • 在 AWS 上調用 Lambda 函數,傳遞任何必要的參數,然後查看回應。該工具提供範例輸入,用於模擬來自觸發 Lambda 的各種其他 AWS 服務的調用。
  • 使用 AWS .NET Mock Lambda Test Tool 在本地偵錯 Lambda 函數。
  • 上傳已組建的 .NET Lambda 函數的 Zip 封存。
  • 查看 Lambda 函數生成的日誌 (透過 CloudWatch Logs)。

要調用 Lambda 函數,請先開啟 AWS Explorer。要執行此操作,請依次轉到「View」功能表和「Tool Windows」,然後選取「AWS Explorer」。

在 AWS Explorer 中,展開 Lambda 部分,按右鍵要調用的 Lambda。按一下「Run '[Remote] …'」

這樣會開啟一個新視窗,在其中您可以選擇範本來調用請求。

或者,鍵入您自己的請求。

按一下「Run」。然後,系統將顯示輸出內容。

除上述內容外,您可以透過終端將所有 Lambda 命令列工具與 Rider 結合使用。

命令列工具

在 Windows、Linux 和 Mac 上,所有可用的命令列工具可以與任何 Shell/終端/命令提示符結合使用。

但是,為了在所有三個作業系統上獲得一致的體驗,我們建議您使用 PowerShell Core。不同終端的 JSON 編碼存在差異,因此很難提供處處適合的範例,但在使用 PowerShell Core 時,該問題就不存在。因此,本課程中的所有範例都使用 PowerShell Core 進行了測試。

AWS 命令列介面 (CLI)

AWS 命令列介面 (CLI) 是一個開源工具,允許您透過命令列管理所有 AWS 資源。您可以手動執行這些操作,也可以使用您選擇的指令碼語言自動執行它們。該工具可用於 Windows、Linux 和 Mac。

在大多數情況下,您應該安裝版本 2 的 AWS CLI,因為它支持 AWS 的所有最新功能。除非您有具體原因要使用版本 1 的 AWS CLI,否則您應該堅持使用版本 2。

當 AWS 服務新增新功能時,AWS CLI 工具將更新,以便您管理這些功能。AWS CLI 工具經常更新,因此您應該留意更新的版本。

安裝

AWS CLI 可用於 Windows、Linux 和 Mac。您的安裝方法將因作業系統而異。有關完整說明,請參閱 AWS 頁面 – 安裝或更新最新版本的 AWS CLI。 AWS 不建議使用任何套裝軟體管理軟體安裝 AWS CLI。而是使用上面提供的連結。

請記住,您必須不時更新 AWS CLI 才能獲得最新功能。

要檢查您的 AWS CLI 版本,請執行以下命令:

aws --version

您將看到類似如下的回應:

aws-cli/2.5.4 Python/3.9.11 Windows/10 exe/AMD64 prompt/off

這說明我已經安裝版本 2.5.4 的 AWS CLI。

要查看 AWS CLI 的最新版本是什麼,請存取 https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst,「CHANGELOG」下面就是最新發佈的版本。我在寫本文時,版本是 2.7.2,因此我需要更新我的 AWS CLI!

概覽和主要功能

借助 AWS CLI,您可以管理您的所有 AWS 資源。AWS CLI 包括強大的查詢和篩選功能,可以幫助您找到所需的資源。如您所願,AWS CLI 允許您列出、查看、管理和調用 Lambda 函數。

AWS CLI 命令參考提供大量包含範例的文件。

適用於 .NET Core 的 AWS Lambda – 範本

借助 AWS CLI,您可以管理您的所有 AWS 資源。AWS CLI 包括強大的查詢和篩選功能,可以幫助您找到所需的資源。如您所願,AWS CLI 允許您列出、查看、管理和調用 Lambda 函數。

AWS CLI 命令參考提供大量包含範例的文件。

適用於 .NET Core 的 AWS Lambda – 範本

在使用 Visual Studio 和 Rider 時,AWS Toolkit 為您提供一系列 C# (和 F#) 專案範本,協助您開始使用 AWS Lambda 函數。

這些範本開始最簡單 – Lambda 函數,它採用一個字串,將其轉換為大寫字母並返回一個字串。該範本本身非常簡單,但這是最好的入門點。借此,您可以輕鬆編寫程式碼,並在幾分鐘內部署 AWS Lambda。

還有更複雜的範本可用,它們可以設定完整的 .NET Web 應用程式或 API 應用程式,並為您組建所有必要的基礎架構,包括角色、許可權、儲存貯體、API Gateway 等。

大多數專案範本附帶 src 和 test 目錄,可立即為您提供單元測試功能。您可以隨著應用程式的增長擴展這些功能。測試專案將協助您了解 Lambda 函數的工作原理,並允許您輕鬆對您的程式碼進行偵錯。

安裝

要安裝範本,請執行以下命令:

dotnet new -i "Amazon.Lambda.Templates::*"

概覽和主要功能

安裝完成後,您將使用 dotnet new 命令來建立新的 Lambda 函數專案。

要查看可用專案範本的清單,請執行以下命令:

dotnet new lambda --list

您將看到類似如下的輸出 (請注意,可用範本會定期更改):

您可能注意到,一些範本的短名稱以「serverless.」開頭,還有一些以「lambda.」開頭。

以「serverless.」開頭的範本使用 AWS Serverless Application Model (SAM) 部署 Lambda 函數,並組建 Lambda 函數使用的必要基礎架構。AWS SAM 是一個開源框架,允許您在 AWS 上組建無伺服器應用程式。除定義 Lambda 函數外,您還可以使用 AWS SAM 定義其他資源,例如 API Gateway、資料庫、事件源。

如果您導航到 projectname/src/projectname 目錄,您會看到一個名為 serverless.template 的檔案。該檔定義了所需的基礎架構及其如何連接到 Lambda 函數。在上面列出的所有「serverless.」範本中,API Gateway 用於將 HTTP 請求路由到 Lambda 函數。

以「lambda.」開頭的範本不使用 Serverless Application Model,也不設定其他基礎架構。如果需要其他基礎架構,您需要自己設定。例如,lambda.Kinesis 專案範本向您展示如何處理傳入的 Kinesis 事件,但它不會為您建立 Kinesis 流,也不會新增 Kinesis 在觸發 Lambda 函數時所需的相關許可權。

要基於 Lambda.EmptyFunction 範本建立新專案,請執行:

dotnet new lambda.EmptyFunction

該工具為開放原始碼,可以在 GitHub 上查看,

https://github.com/aws/aws-lambda-dotnet#dotnet-cli-templates。

與其他命令列工具一樣,您應該密切關注相關的 GitHub 頁面,看看新版本何時發佈。

AWS Extensions for .NET CLI (dotnet lambda ...)

雖然 AWS CLI 工具允許您管理所有 AWS 資源,但 AWS Extensions for .NET CLI 專門針對 Lambda 函數,作為 .NET 工具 (即 dotnet lambda) 調用。

安裝

要安裝 AWS Extensions for .NET CLI,請執行以下命令:

dotnet tool install -g Amazon.Lambda.Tools

要驗證其安裝是否正確,請執行:

dotnet lambda

這將輸出您可以使用的命令摘要和版本號。

概覽和主要功能

該工具適用於任何 Shell,從 Visual Studio Code 和 Rider 內的終端使用時尤為有用。它允許您執行與 Lambda 函數相關的常見任務。

例如,要列出所有 Lambda 函數,您可以使用:

dotnet lambda list-functions

或者,要調用 Lambda 函數,請執行:

dotnet lambda invoke-function functionName 

它還可以部署 Lambda 函數。在使用 dotnet Lambda 範本 (見上文) 建立 Lambda 函數後,您可以使用以下方法將該函數部署到 AWS:

dotnet lambda deploy-function

這將啟動組建和引導式部署流程。該工具將要求您提供 Lambda 函數名稱、要分配給該函數的角色 (或建立新函數)。如果您建立新角色,該工具將要求您為新角色選擇許可權策略。然後,該工具會將函數部署到 AWS,幾秒鐘之內您就可以調用它了!

要查看所有可用的命令列選項,請使用:

dotnet lambda deploy-function --help

請記住,每個命令背後可能有很多功能,因此了解每個命令列都支援多個選項,這點很重要。例如,update-function-config 是您啟用和設定 Lambda 函數 URL 的地方。該功能不適用於 deploy-function 命令。及時了解 Lambda 服務的最新版本文件和功能,這點非常重要,因為這樣將幫助您了解和使用最新功能。

雖然在開發程式碼和了解 AWS 時,該工具可非常方便地管理 Lambda 函數且功能強大,但我們強烈建議您在應用程式達到一定成熟度時,使用強大的 CI/CD 流程將其部署到應用程式。AWS 支持所有主要的 CI/CD 工具。

AWS Tools for PowerShell

AWS Tools for PowerShell 透過一組 PowerShell 模組公開適用於 .NET 的 AWS SDK。對於熟悉 PowerShell 腳本的人來說,這使它們成為用於編寫部署和維護腳本的強大工具。

AWS Tools for PowerShell 可以在 Windows、Mac 和 Linux 上安裝,在所有三個平台上提供一組相同的功能。

這些工具以單個模組提供,或者以模組化版本提供,在其中您可以根據需要下載所需的模組。

建議在生產環境中使用模組化版本。

查看此處,您可以找到更多關於在這些版本中做出選擇的資訊。

安裝

要在 Windows 上安裝,請參閱在 Windows 上安裝 AWS Tools for PowerShell 指南。

要在 Linux 或 Mac 上安裝,請參閱在 Linux 或 macOS 上安裝 AWS Tools for PowerShell 指南。

概覽和主要功能

可以由 AWS Tools for PowerShell 執行的模組數量以及命令的數量非常多。關於 AWS Lambda,您可以使用這些工具列出、查看、部署、管理和調用函數。

要查看所有可用命令,請執行:

Get-Command -Module AWS.Tools.Lambda

你可以在適用於 AWS Tools for PowerShell Cmdlet 參考中找到所有命令的完整文件,請導航到左側列中的 Lambda 部分。

要列出所有 Lambda 函數,請執行:

Get-LMFunctionList

要調用 Lambda 函數,請執行:

$Response=Invoke-LMFunction -FunctionName StringToUpperCase -Payload '"hello world"'

[System.IO.StreamReader]::new($Response.Payload).ReadToEnd() 

Docker for .NET 7 Native AOT 函數

2022 年 11 月,微軟發佈了 .NET 7。儘管此版本的 .NET 沒有 Lambda 託管的執行期,但您可以將其用作 帶 native ahead-of-time (AOT) 編譯的自訂執行期。

 這種方法的主要好處是可以大大加快 .NET 7 函數的冷開機速度。經過測試對比執行支援託管執行期的 .NET 6 的函數和執行使用 AOT 編譯的.NET 7 的函數,.NET 7 函數的啟動速度最多快 86%。

要了解有關 AWS 上無伺服器 .NET 應用程式的更多資訊,請參閱這篇文章: 使用 .NET 7 在 AWS Lambda 上組建無伺服器 .NET 應用程式。

要使用帶 .NET 7 Lambda 函數的編譯功能,您需要安裝並執行 Docker。
您可以從 Docker 安裝概覽中下載 Docker。

精選工具的比較

知識檢查

您現在已完成模組 2「使用 AWS Lambda 的適用於 .NET 開發的工具」。以下測試可讓您檢查到目前為止學習到的內容。

1.哪個適用於 IDE 的 AWS 工具包的功能最多?(單選)

a.Visual Studio Code

b.Visual Studio

c.Rider

d.它們都有相同的功能

2.什麼作業系統支援 AWS Extensions for .NET CLI?

a.Mac

b.Linux

c.Windows

d.以上都是

a.Homebrew

b.Pip

c.Chocolatey

d.直接從 AWS 下載

答案:1-b、2-d、3-d

結語

在本模組中,您學習了用於開發 .NET Lambda 函數的重要熱門工具。現在,您知道哪些工具可用、如何安裝、一些基礎使用知識,並且知道了透過哪些連結了解詳細資訊。

但是,與類似的其他事情一樣,最好的學習方法是開始體驗。在下一個模組中,您將學習如何在 Lambda 服務中使用 .NET。

本頁對您是否有幫助?

AWS Lambda 上的 .NET