- AWS Lambda 教程
- AWS Lambda - 首頁
- AWS Lambda - 概述
- AWS Lambda - 環境設定
- AWS Lambda - 簡介
- 構建 Lambda 函式
- NODEJS 中的函式
- Java 中的函式
- Python 中的函式
- Go 中的函式
- C# 中的函式
- 配置 Lambda 函式
- 使用 AWS 控制檯建立和部署
- 使用 AWS CLI 建立和部署
- 使用 Serverless Framework 建立和部署
- AWS 執行和呼叫 Lambda 函式
- 刪除 Lambda 函式
- 使用 Amazon API Gateway
- 帶有 Amazon S3 的 Lambda 函式
- 帶有 Amazon DynamoDB 的 Lambda 函式
- 帶有計劃事件的 Lambda 函式
- 帶有 Amazon SNS 的 Lambda 函式
- 帶有 CloudTrail 的 Lambda 函式
- 帶有 Amazon Kinesis 的 Lambda 函式
- 帶有自定義使用者應用程式的 Lambda 函式
- AWS Lambda@Edge 與 CloudFront
- 使用 Cloudwatch 監控和故障排除
- AWS Lambda - 其他示例
- AWS Lambda 有用資源
- AWS Lambda - 快速指南
- AWS Lambda - 有用資源
- AWS Lambda - 討論
使用 AWS CLI 建立和部署
AWS CLI 是一款命令列工具,可幫助您使用 AWS 服務。我們可以用它來建立、更新、刪除和呼叫 aws lambda 函式。在本節中,您將詳細討論 AWS CLI 的安裝和用法。
安裝 AWS CLI
本節將指導您完成在各種作業系統上安裝 AWS CLI 的過程。請按照給定的步驟操作,並在附帶截圖時觀察相應的截圖。
適用於 Windows
檢查您的 Windows 配置,並選擇以下連結之一安裝 AWS CLI MSI -
適用於 Windows 64 位 - 適用於 Windows 的 AWS CLI MSI 安裝程式 (64 位)
適用於 Windows 32 位 - 適用於 Windows 的 AWS CLI MSI 安裝程式 (32 位)
選擇相應的連結並單擊後,您會發現如下所示的視窗 -
接下來,如以下螢幕截圖所示,在 Windows 中設定環境路徑 -
完成後,您可以在命令提示符下使用以下命令檢視是否已安裝aws cli -
aws --version
它將顯示 aws-cli 版本的詳細資訊,如以下螢幕截圖所示 -
適用於 Linux/Mac
要在 Linux 和 Mac 上安裝,您需要 Python 2.6.3 或更高版本。然後,使用以下命令進行進一步的安裝過程 -
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" $ unzip awscli-bundle.zip $ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
現在,我們需要配置 AWS 設定。您可以為此使用以下命令 -
aws configure
為此,它需要以下詳細資訊 -
- AWS 訪問金鑰 ID
- AWS 金鑰
- 預設區域名稱
- 預設輸出格式
您可以從您的 aws 控制檯中獲取這些詳細資訊。轉到右上角的帳戶名稱,如 -
現在,單擊我的安全憑證並從左側選擇使用者。新增具有所需詳細資訊的使用者。
新增使用者並獲取訪問金鑰和金鑰。要檢視新的訪問金鑰,請選擇顯示。您的憑證將如下所示 -
訪問金鑰 ID - AOSAIOSFOCDD7Example
金鑰 - aJuirCVtnROUN/K7MDENG/bPxRfiCYExampleKEY
AWS CLIS 參考命令
下表將提供可用於使用aws cli的命令參考。
| aws cli 命令名稱 | 命令參考 |
|---|---|
| create-function | create-function --function-name <value> --runtime <value> --role <value> --handler <value> [--code <value>] [--description <value>] [--timeout <value>] [--memory-size <value>] [--environment <value>] [--kms-key-arn <value>] [--tags <value>] [--zip-file <value>] [--cli-input-json <value>] |
| list-functions | list-functions [--master-region <value>] [--function-version <value>] [--max-items <value>] [--cli-input-json <value>] [--starting-token <value>] [--page-size <value>] [--generate-cli-skeleton <value>] |
| get-function | get-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
| get-function-configuration | get-function-configuration --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
| get-account-settings | get-account-settings [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
| update-function-configuration | update-function-configuration --function-name <value> [--role <value>] [--handler <value>] [--description <value>] [--timeout <value>] [--memory-size <value>] [--vpc-config <value>] [--environment <value>] [--runtime <value>] [--dead-letter-config <value>] [--kms-key-arn <value>] [--tracing-config <value>] [--revision-id <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
| update-function-code | update-function-code --function-name <value> [--zip-file <value>] [--s3-bucket<value>] [--s3-key <value>] [--s3-object-version <value>] [--publish | --no-publish] [--dry-run | --no-dry-run] [--revision-id <value>][--cli-input-json <value>][--generate-cli-skeleton <value>] |
| delete-function | delete-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
現在,讓我們詳細討論這些命令。
create-function
此 api 將建立一個新的 lambda 函式。程式碼需要以 zip 格式提供。如果要建立的函式已存在,則 api 將失敗。請注意,函式名稱區分大小寫。
包含的命令
您可以與 create-function 一起使用的命令列表如下 -
create-function --function-name <value> --runtime <value> --role <value> --handler <value> [--code <value>] [--description <value>] [--timeout <value>] [--memory-size <value>] [--environment <value>] [--kms-key-arn <value>] [--tags <value>] [--zip-file <value>] [--cli-input-json <value>]
包含的選項
您可以與上述函式一起使用的各種選項如下 -
--function-name (字串) - 這將獲取函式的名稱。名稱可以是 64 位字元。
--runtime(字串) - 在這裡,您需要指定執行時環境,即語言選擇。執行時的詳細資訊如下所示 -
| 可用選項 | 執行時 |
|---|---|
| Python v3.6 | python3.6 |
| Python v2.7 | python2.7 |
| NodeJS v6.10 | nodejs6.10 |
| NodeJS v8.10 | nodejs8.10 |
| Java | java8 |
| C# 1 | dotnetcore1.0 |
| C# 2 | dotnetcore2.0 |
| Go | go1.x |
--role(字串) - 這將是 lambda 策略的名稱,即授予 lambda 函式以訪問其他服務的許可權。它將具有根據指定角色授予的許可權。
--handler (字串) - 這是 lambda 程式碼執行將開始的處理程式的名稱。
- 對於 nodejs,處理程式名稱是我們匯出的模組名稱。
- 對於 java,它是 package.classname :: handler 或 package.classname
- 對於 python,處理程式是 nameofthefile。
--code (結構) - AWS Lambda 程式碼
--description (字串) - AWS Lambda 函式的描述
--timeout (整數) - 超時將是 lambda 函式必須終止執行的時間。預設為 3 秒。
--memory-size (整數) - 這是分配給 aws lambda 函式的記憶體。AWS 將根據提供的記憶體分配 CPU 和記憶體分配量。
--environment (結構) - 它是包含 aws lambda 函式所需的 environment 詳細資訊的物件。
e.g : Variables = {Name1 = string, Name2 = string}
--kms-key-arn (字串) - 這是用於加密環境變數的 Amazon 資源名稱 (ARN)。如果未提供,它將採用預設設定進行加密。
--zip-file (blob) - 包含程式碼詳細資訊的 zip 檔案的路徑。
--cli-input-json (字串):根據提供的 JSON 字串執行服務操作。JSON 字串遵循 --generate-cli-skeleton 提供的格式。如果在命令列上提供了其他引數,則 CLI 值將覆蓋 JSON 提供的值。
現在,讓我們使用 nodejs 作為執行時建立一個簡單的 AWS Lambda 函式,並新增一些要列印的 console.logs。
考慮一個示例程式碼來理解它 -
exports.handler = async (event) => {
console.log("Using aws cli");
return 'Hello from Lambda from aws cli!'
};
現在,壓縮檔案並將其儲存為awscli.zip。
獲取 ARN
對於角色,讓我們使用我們已建立的現有角色中的arn。要獲取 ARN,您需要按照此處顯示的步驟操作。在附帶截圖時觀察相應的截圖 -
步驟 1
轉到 IAM 並從角色中選擇您想要的角色。角色的 ARN 詳細資訊將顯示如下。將角色 ARN 與aws cli中的create-function一起使用。
在此處觀察角色 arn 為:arn:aws:iam::625297745038:role/lambdaapipolicy
帶有create-function值的命令如下 -
aws lambda create-function --function-name "awslambdausingcli" --runtime "nodejs8.10" --role "arn:aws:iam::625297745038:role/lambdaapipolicy" --handler "awscli.handler" --timeout 5 --memory-size 256 --zip-file "fileb://awscli.zip"
現在,如果您在 aws cli 中執行該命令,則會發現如下所示的輸出 -
在 AWS 控制檯中,Lambda 函式將顯示如下 -
函式的詳細資訊如下所示 -
配置的詳細資訊如下所示 -
您可以測試該函式並檢查輸出,如下所示 -
相應的日誌輸出顯示在此處 -
list-functions
此 api 提供迄今為止在 AWS Lambda 中建立的函式列表。
包含的命令
以下是與此 API 相關的命令 -
list-functions [--master-region <value>] [--function-version <value>] [--max-items <value>] [--cli-input-json <value>]
list-functions 下的選項
以下是在此 list-functions api 下您可以使用的各種選項 -
--master-region(字串) - 可選。需要從中顯示函式的區域。
--function-version(字串) - 可選。這將提供函式版本。
--max-items(整數) - 可選。這將根據指定的值提供專案。
--cli-input-json(字串) - 可選。將根據提供的 json 檔案執行操作。
帶有list-functions值的命令如下 -
aws lambda list-functions --max-items 3
該命令顯示如下詳細資訊 -
get-function
此 api 將提供函式的詳細資訊,以及一個 url 連結,該連結具有使用 create-function 上傳的 zip 檔案。包含 zip 詳細資訊的 url 僅在 10 分鐘內有效。
包含的命令
以下是與此 api 相關的命令 -
get-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
包含的選項
--function-name - AWS Lambda 函式的名稱。您還可以指定函式的 Amazon 資源名稱。
--qualifier(字串) - 可選。函式版本可用於獲取函式的詳細資訊。
帶有 get-function 值的命令為 -
aws lambda get-function --function-name awslambdausingcli
該命令顯示如下詳細資訊 -
它提供包含上傳 zip 程式碼的 url。在上述情況下,url 為 -
https://prod-04-2014- tasks.s3.amazonaws.com/snapshots/625297745038/awslambdausingcli-97048f8d-4a08 -4ed9-99d9-acb00d2063d2?versionId=d04HKvPu9S2zz8pzjbW6Rmf5o5fxnc_r&X-Amz-Security -Token=FQoDYXdzEKT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDCpTmGvtwKToPBiWcyK3A96UcJEnwvYDhMbbxu %2Bg2gffK2ocfnlEeiCHak8QqqE1RFpbKrdks9NzxP9gNbagL4M9RValxJ1a9PUY%2FOdAekscRHOiX00MVAxUlI8 2pKryhdOwLJWSj0uRzqvOxCcBwJenHrSNPeG6lMa2ZDo0qZFEUDONSaTg4nuSnJK1f6t3pMAKu4vF9wPvf92G%2BU 60rUxwleggigISmD9l1IlZse3%2BVF1JlNuN%2F5d85v0y2Q%2F%2BO515CybcZpn91sHPYG8JMJ00LsrkQ2Ww4VU 9Zz5c5QYH4JYPj0CyEgSz9b%2FMceMPpOoPUAMjctb%2FEwQqcShZeqAr9%2Fcd2ZI%2BXl2%2Bs4ri0ucgPvQQvs eGIIiZbX3GqdwR2jb1nylrAEIfiuFMoSWfcFYoYtuL0MZnjGR9jy2GNkp6MB%2BlHHr7%2BnuFRUzU26rgDYmdE1w Rb3%2B21Jm49WGDa9opRLvUxFaux57Or70haib2FuKzN6Gf3Vzzk5KPdWsYUpaLyf%2B1ovEytOZhB1JEXuCs%2FG IlOXS88yxT%2BpOKmyxweiezpGgI%2FAkSAQTbSRsYQKIOFyIJNHzplwrJKhy28vy60numIBIo9Zqq2AU%3D &X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20180527T112426Z&X-Amz- SignedHeaders=host&X-Amz-Expires=600&X-Amz- Credential=ASIAICSQHLSBWFP37U4Q%2F20180527%2Fus- east-1%2Fs3%2Faws4_request&X-Amz-Signature= 8b97e7d6d7da13313068e027894d2c875be5e50a0c5a62550f55307985bdc1aa
get-function-configuration
這將提供 AWS Lambda 函式的配置詳細資訊。
以下是與此 api 一起使用的命令 -
get-function-configuration --function-name <value> [--qualifier <value>]
以下是與一起使用的選項
--function-name (字串) - aws lambda 函式的名稱。您還可以指定函式的 Amazon 資源名稱。
--qualifier(字串) - 可選。函式版本可用於獲取函式的詳細資訊。
帶有 get-function 值的命令為 -
aws lambda get-function-configuration --function-name awslambdausingcli
該命令顯示如下詳細資訊 -
get-account-settings
此 api 提供帳戶設定。
涉及的命令
您可以與此 api 一起使用的命令為 -
get-account-settings [--cli-input-json <value>] [--generate-cli-skeleton <value>]
涉及的選項
您可以與此 api 一起使用以下選項 -
--cli-input-json(字串) − 根據提供的 JSON 字串執行服務。
--generate-cli-skeleton(字串) − 在不傳送 API 請求的情況下列印 JSON 輸出。
您可以使用以下命令獲取賬戶設定:−
aws lambda get-account-settings
執行上述命令後,您將看到以下輸出:−
update-function-configuration
此 API 用於更新已建立的 AWS Lambda 函式的配置詳細資訊。您可以更改記憶體、超時、處理程式、角色、執行時、描述等。
涉及的命令
以下是在 update-function-configuration API 中涉及的命令:−
update-function-configuration --function-name <value> [--role <value>] [--handler <value>] [--description <value>] [--timeout <value>] [--memory-size <value>] [--environment <value>] [--runtime <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
涉及的選項
以下是在 update-function-configuration API 中涉及的選項:−
--function-name − AWS Lambda 函式的名稱
--role (字串) − 可選。需要更新角色的 ARN。
--handler (字串) − 可選。AWS Lambda 函式的處理程式詳細資訊。
--description(字串) − 可選。函式的描述。
--timeout(整數) − 可選。AWS Lambda 函式可以終止所需的時間。
--memory-size(整數) − 可選。這是分配給 AWS Lambda 函式的記憶體。AWS 將根據提供的記憶體分配 CPU 和記憶體。
--environment (結構) − 可選。它是一個包含 AWS Lambda 函式所需環境詳細資訊的物件。
e.g: Variables = {Name1 = string, Name2 = string}
--runtime(字串) − 在這裡,您需要指定執行時環境,即語言選擇。
執行時的詳細資訊如下表所示:−
| 可用選項 | 執行時 |
|---|---|
| Python v3.6 | python3.6 |
| Python v2.7 | python2.7 |
| NodeJS v6.10 | nodejs6.10 |
| NodeJS v8.10 | nodejs8.10 |
| Java | java8 |
| C# 1 | dotnetcore1.0 |
| C# 2 | dotnetcore2.0 |
| Go | go1.x |
--cli-input-json (字串) − 可選。這將根據提供的 JSON 字串中指定的 API 執行操作。
--generate-cli-skeleton (字串) − 可選。這將輸出所有詳細資訊的 JSON 骨架,而無需執行 API。輸出可用作--cli-input-json的輸入。
現在,讓我們更改之前建立的 AWS Lambda 函式的記憶體和超時。請按照以下步驟操作,並觀察為此目的附加的相應螢幕截圖:−
步驟 1
更改發生前的記憶體和超時如下:−
步驟 2
現在,使用update-function-configuration,讓我們將記憶體和超時更改為 320MB 和超時 10 秒。為此,請使用以下命令和值:−
aws lambda update-function-configuration --function-name “awslambdusingcli” --timeout 10 --memory-size 320
步驟 3
然後,您將看到以下輸出作為顯示:−
步驟 4
使用update-function-configuration後,AWS 控制檯中的顯示如下:−
更新函式程式碼
此 API 將更新現有 AWS Lambda 函式的程式碼。
涉及的命令
update-function-code --function-name <value> [--zip-file <value>] [--s3-bucket <value>] [--s3-key <value>] [--s3-object-version <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
涉及的選項
以下是在 update-function-code API 中涉及的選項:−
--function-name(字串) − AWS Lambda 函式的名稱
--zip-file (blob) − 可選。包含要更新的程式碼的 zip 檔案的路徑。
--s3-bucket(字串) − 可選。上傳包含程式碼的 zip 檔案的 S3 儲存桶名稱。
--s3-key(字串) − 可選。要上傳的 AWS S3 物件鍵名稱。
--s3-object-version (字串) − 可選。AWS S3 物件版本。
--cli-input-json (字串) − 可選。這將根據提供的 JSON 字串中指定的 API 執行操作。
--generate-cli-skeleton (字串) − 可選。這將輸出所有詳細資訊的 JSON 骨架,而無需執行 API。輸出可用作 --cli-input-json 的輸入。
更新後的程式碼如下所示:−
exports.handler = async (event, context) => {
console.log("Using aws cli");
console.log()
return 'Hello from Lambda from aws cli!'
};
您可以使用以下命令及其值來實現此目的:−
aws lambda update-function-code --function-name "awslambdausingcli" --zip-file "fileb://awscli.zip"
相應的輸出如下所示:−
AWS 控制檯中的顯示如下所示:−
相應的日誌輸出如下所示:−
delete-function
delete aws cli API 將刪除給定的函式。
包含的命令
相同的命令詳細資訊在此處給出:−
delete-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
包含的選項
此 API 中包含的選項如下所示:−
--function-name(字串) − 這將獲取 AWS Lambda 函式的名稱或 ARN。
--qualifier (字串) − 可選。在這裡,您可以指定需要刪除的 AWS Lambda 版本。
-- cli-input-json(字串) − 根據提供的 JSON 字串執行服務操作。JSON 字串遵循 --generate-cli-skeleton 提供的格式。如果在命令列上提供了其他引數,則 CLI 值將覆蓋 JSON 提供的值。
--generate-cli-skeleton(字串) − 在不傳送 API 請求的情況下將 JSON 骨架列印到標準輸出。
您可以使用以下命令及其值來實現此目的:−aws lambda delete-function --function-name "lambdatestcli"
現在,請注意,該函式將不會顯示在 AWS Lambda 函式列表中:−