AWS Lambda 簡介



AWS Lambda 是一種服務,它負責在沒有伺服器的情況下計算您的程式碼。它被稱為無伺服器計算。程式碼根據 AWS 服務中的事件響應執行,例如在 S3 儲存桶中新增/刪除檔案、更新 Amazon DynamoDB 表格、來自 Amazon API Gateway 的 HTTP 請求等。

AWS Lambda 程式碼可以用 Node.js、Java、C#、Python 和 Go 編寫。本章將詳細介紹如何在 AWS 管理控制檯中建立 AWS Lambda 函式。

AWS 管理控制檯

透過以下連結登入 AWS 管理控制檯 https://aws.amazon.com/console。登入後,它會將您重定向到顯示 AWS 服務的螢幕。

AWS Console

示例:建立函式

讓我們透過一個示例來了解 AWS 管理控制檯的功能。單擊 Lambda(如上所示),它將重定向到建立函式,如下所示:

Create Function

單擊建立函式按鈕,螢幕將顯示以下詳細資訊:

Create Function Display

請注意,預設情況下,選項為從頭開始創作。此選項允許您從頭開始編寫 Lambda 程式碼。它只有一個帶有hello world訊息的簡單函式。

第二個選項藍圖具有以下詳細資訊。

Blue Print

它提供了已經為某些 AWS 服務編寫的程式碼的詳細資訊,這些程式碼使用 AWS Lambda 提供的語言編寫。如果您需要為任何服務編寫 AWS Lambda 程式碼,可以在藍圖中檢查並開始。

第三個選項無伺服器應用程式儲存庫具有無伺服器應用程式的設定,這將有助於部署 AWS Lambda 程式碼。

在接下來的討論中,我們將使用從頭開始創作選項來建立 AWS Lambda 函式。

在建立 Lambda 函式之前,我們需要一個角色,即與 AWS 服務和 AWS Lambda 協同工作的許可權。稍後,該角色必須分配給 AWS Lambda 函式。

在 AWS 管理控制檯中建立角色

要在 AWS 管理控制檯中建立角色,請轉到 AWS 管理控制檯服務並單擊 IAM,如下所示:

Role creation

現在,如果您單擊IAM,您將看到如下所示的螢幕:

Dashboard

如果您選擇角色,您可以在螢幕上看到以下按鈕:

Create Role Button

現在,單擊建立角色。它會要求您選擇需要使用建立的角色的服務。

Create Role Services

由於我們需要將此角色與 AWS Lambda 一起使用,因此選擇Lambda並單擊下一步:許可權按鈕,如上所示。下一個螢幕顯示根據 AWS 服務可用的策略名稱。您可以從此處選擇策略:

Attach permission Policy

例如,如果您希望 AWS Lambda 具有與 S3 和 DynamoDB 協同工作的許可權,則需要選擇策略。在搜尋框中,輸入 AWS 服務並單擊複選框。您可以選擇多個策略,然後單擊下一步:審查

也可以建立您自己的策略。例如,存在 DynamoDB 表,並且您只需要向該表授予許可權,在這種情況下,您可以建立策略。

單擊螢幕上顯示的建立策略按鈕。螢幕上顯示以下詳細資訊。

Create policy

選擇您正在為其建立策略的服務。稍後,它將顯示操作資源請求條件的資料。

Request Conditions

現在,我們應該選擇服務。讓我們從搜尋中選擇AWS DynamoDB操作具有以下詳細資訊:

AWS Dynamodb

現在,輸入要授予 DynamoDB 的訪問級別。然後,資源將顯示以下詳細資訊:

resources

現在,選擇表資源型別。您可以看到以下輸出:

Table ReSource

要獲得表許可權,您需要新增 ARN。ARN 是在 AWS DynamoDB 中建立的表的唯一詳細資訊。在 DynamoDB 中建立表時,您將獲得這些詳細資訊。

如果您單擊新增 ARN,它將顯示以下詳細資訊:

Add ARN

現在,如果您輸入ARN,則區域、帳戶名稱將被填充。您應該單擊新增按鈕以新增策略。同樣,您可以為其他服務建立策略。

Role Description

在這裡,我們選擇了兩個策略AmazonS3FullAccessAmazonDynamoDBFullACcess。我們在該角色中授予了對 S3 和 DynamoDB 的完全訪問許可權。但是,建議您僅向必要的儲存桶和表授予許可權。

您可以按照前面討論的步驟使用ARN建立策略。

步驟 1

單擊建立角色按鈕以建立角色。所有建立的角色都將顯示如下:

Create Role Display

步驟 2

請注意,如果您需要修改建立的角色,可以選擇所需的角色。如果我們選擇從頭開始創作選項,則必須輸入名稱、執行時和角色

Author From Scratch

步驟 3

您可以在執行時下拉選單中觀察以下詳細資訊:

Runtime

步驟 4

您可以選擇您選擇的執行時並繼續,如圖所示。

Choice Proceed

角色下拉選單具有以下選項:

  • 選擇現有角色 - 這將顯示在 IAM 角色中建立的所有角色。

  • 從模板建立新角色 - 這將允許您建立角色,並將顯示為此角色選擇的許可權。觀察螢幕截圖以更好地理解。

  • 建立自定義角色 - 這允許使用者建立策略,如我們前面討論的那樣。

步驟 5

選擇執行時、角色並新增函式。單擊建立函式按鈕以建立 Lambda 函式。顯示的下一個螢幕如下所示:

Create Function Button

AWS Lambda 函式的組成部分

AWS Lambda 函式有兩個部分:配置監控。讓我們詳細討論每個部分。

配置

配置中包含以下功能。

新增觸發器

需要新增到 AWS Lambda 函式的觸發器如下所示:

Add Triggers

請注意,當我們選擇觸發器時,我們需要為該觸發器新增配置詳細資訊。例如,對於 S3 觸發器,我們需要選擇儲存桶名稱;對於 DynamoDB 觸發器,我們需要選擇表名稱。

示例

讓我們來看一個 S3 觸發器配置詳細資訊的示例:

Configuration

現在,為新增的 S3 觸發器新增配置詳細資訊:

Configuration Details

在這裡,您需要選擇要在其上觸發 Lambda 的儲存桶名稱、事件型別、字首和篩選模式(如有)以及新增觸發器。

在 Lambda 中新增程式碼

現在,我們應該關注要編寫的 Lambda 程式碼。要在 AWS Lambda 中新增程式碼,有三個選項:

  • 使用內聯編輯器
  • 使用 .zip 檔案
  • 從 Amazon S3 上傳檔案

這在下面給出的螢幕截圖中顯示:

Screenshot

讓我們詳細討論每一個。

使用內聯編輯器

您可以編寫程式碼的內聯程式碼編輯器如下所示:

inline_editor

您可以透過選擇您選擇的語言來編寫程式碼。您可以在此處再次選擇執行時。

觀察以下螢幕截圖以更好地理解:

Runtime Menu

程式碼必須寫在index.js.Handler中。詳細資訊將根據執行時而有所不同。對於Node.js,它是檔名.匯出函式,現在是index.lambda handler

上傳 .ZIP 檔案

您可以首先編寫程式碼,將其壓縮,然後透過選擇上傳 .ZIP 檔案來上傳 zip 檔案。

從 Amazon S3 上傳檔案

您可以將檔案上傳到 S3 儲存桶並選擇從 Amazon S3 上傳檔案選項。

請注意,對於.ZIPS3,將無法更改執行時。

環境變數

它們接收鍵值對並將它們與 AWS Lambda 程式碼共享。我們可以在 AWS Lambda 中使用環境變數來儲存資料庫連線詳細資訊、儲存輸出的檔案詳細資訊、日誌檔案詳細資訊等。

Environment variables

標籤

它們是新增到 AWS Lambda 的鍵值對,用於在跨不同區域使用時更好地組織函式。對於簡單的用例,不需要它。當建立大量 Lambda 函式時,標籤有助於過濾和管理 Lambda 函式。

Tags

執行角色

如果在建立 Lambda 函式開始時沒有正確完成,您可以在此處再次更改角色。您可以在此處更新或建立新角色。它提供與建立 Lambda 函式開始時顯示的相同選項。

Execution Role

基本設定

在這裡,您需要輸入 Lambda 函式正在執行的操作的簡短描述。選擇 Lambda 函式所需的記憶體和超時。

Basic Settings

網路

這允許您選擇 VPC,這將允許您從 VPC 訪問 Lambda 函式。預設情況下,未選擇任何 VPC。

Network

除錯和錯誤處理

對於除錯和錯誤處理,您可以選擇 AWS 服務來發送詳細資訊。可用的選項包括無、SNSSQS

Debugging and Error Handling

併發

這允許您為該函式分配允許的併發執行的特定限制。

Concurrency

審計和合規性

這包含使用 AWS CloudTrail 管理的日誌。

Auditing and Compliance

完成後,您需要使用此處顯示的儲存按鈕儲存更改:

Save Button.jpg

現在,如果您單擊測試按鈕,它將要求提供測試事件。您可以傳遞示例測試事件,如下所示:

建立的測試事件如下所示:

Configure Test Event

現在,儲存測試事件並單擊測試按鈕以檢視 AWS Lambda 函式的執行:

Execution Result

index.js的程式碼如下:

exports.lambdahandler = (event, context, callback) => {
   // TODO implement
   console.log(event.key1);
   console.log(event.key2);
   console.log(event.key3);
   callback(null, 'Lambda test');
};

請注意,當出現錯誤或成功時會呼叫回撥函式。如果成功,您將看到Lambda 測試將被顯示。

監控

選擇監控選項卡以檢視 Lambda 函式的執行詳細資訊。圖表顯示執行時間、發生的錯誤等的詳細資訊。

Monitoring

您也可以在 Cloudwatch 中檢視日誌。為此,請訪問 AWS 服務並選擇 Cloudwatch,如下所示:

Management Tool

現在,從左側選擇日誌,並在過濾器中輸入您的函式名稱:

Cloud Watch
廣告