使用 AWS CLI 建立和部署



AWS CLI 是一款命令列工具,可幫助您使用 AWS 服務。我們可以用它來建立、更新、刪除和呼叫 aws lambda 函式。在本節中,您將詳細討論 AWS CLI 的安裝和用法。

安裝 AWS CLI

本節將指導您完成在各種作業系統上安裝 AWS CLI 的過程。請按照給定的步驟操作,並在附帶截圖時觀察相應的截圖。

適用於 Windows

檢查您的 Windows 配置,並選擇以下連結之一安裝 AWS CLI MSI -

選擇相應的連結並單擊後,您會發現如下所示的視窗 -

Install AWS

接下來,如以下螢幕截圖所示,在 Windows 中設定環境路徑 -

Environment Path

完成後,您可以在命令提示符下使用以下命令檢視是否已安裝aws cli -

aws --version

它將顯示 aws-cli 版本的詳細資訊,如以下螢幕截圖所示 -

AWS Cli Version

適用於 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 控制檯中獲取這些詳細資訊。轉到右上角的帳戶名稱,如 -

Helpful Tips

現在,單擊我的安全憑證並從左側選擇使用者。新增具有所需詳細資訊的使用者。

Security Credentials

新增使用者並獲取訪問金鑰和金鑰。要檢視新的訪問金鑰,請選擇顯示。您的憑證將如下所示 -

訪問金鑰 ID - AOSAIOSFOCDD7Example

金鑰 - aJuirCVtnROUN/K7MDENG/bPxRfiCYExampleKEY

Access Key

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 詳細資訊將顯示如下。將角色 ARNaws cli中的create-function一起使用。

Summary Cli

在此處觀察角色 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 中執行該命令,則會發現如下所示的輸出 -

Command Cli

在 AWS 控制檯中,Lambda 函式將顯示如下 -

Cli Function

函式的詳細資訊如下所示 -

Cli Code

配置的詳細資訊如下所示 -

Cli Role

您可以測試該函式並檢查輸出,如下所示 -

Cli Execution

相應的日誌輸出顯示在此處 -

Cli Output

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

該命令顯示如下詳細資訊 -

Cli Display

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

該命令顯示如下詳細資訊 -

Option Included

它提供包含上傳 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 Function.

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

執行上述命令後,您將看到以下輸出:−

Option Involved

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

更改發生前的記憶體和超時如下:−

Timeout

步驟 2

現在,使用update-function-configuration,讓我們將記憶體和超時更改為 320MB 和超時 10 秒。為此,請使用以下命令和值:−

aws lambda update-function-configuration --function-name “awslambdusingcli” 
--timeout 10 --memory-size 320

步驟 3

然後,您將看到以下輸出作為顯示:−

Cli Updated

步驟 4

使用update-function-configuration後,AWS 控制檯中的顯示如下:−

Cli Configuration

更新函式程式碼

此 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"

相應的輸出如下所示:−

Cli Purpose

AWS 控制檯中的顯示如下所示:−

AWS Cli Console

相應的日誌輸出如下所示:−

Cli Log

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"

Delete Function

現在,請注意,該函式將不會顯示在 AWS Lambda 函式列表中:−

Cli Keywords
廣告

© . All rights reserved.