使用 AWS CLI 创建和部署


AWS CLI是一个命令行工具,有助于使用 AWS 服务。我们可以使用它来创建、更新、删除、调用 aws lambda 函数。在本章中,您将详细讨论 AWS CLI 的安装和使用。

安装 AWS CLI

本部分将指导您完成在各种操作系统上安装 AWS CLI。按照给出的步骤进行操作,并观察所附的相应屏幕截图。

对于 Windows

检查您的 Windows 配置并选择以下链接之一来安装 AWS CLI MSI -

选择相应的链接并单击它后,您可以找到一个窗口,如下所示 -

安装AWS

接下来,在窗口中设置环境路径,如下面的屏幕截图所示 -

环境路径

完成后,您可以在命令提示符下使用以下命令来查看是否安装了aws cli -

aws --version

它显示 aws-cli 版本的详细信息,如以下屏幕截图所示 -

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 - AOSAIOSFOCDD7示例

秘密访问密钥 - aJuirCVtnROUN/K7MDENG/bPxRfiCYExampleKEY

访问密钥

AWS CLIS 的参考命令

下表将提供可用于aws cli的命令参考。

aws cli 命令的名称 命令参考
创建函数 create-function --function-name <值> --runtime <值> --role <值> --handler <值> [--code <值>] [--description <值>] [--timeout <值>] [--内存大小 <值>] [--环境 <值>] [--kms-key-arn <值>] [--tags <值>] [--zip-file <值> ] [--cli-input-json <值>]
列表函数 list-functions [--master-region <值>] [--function-version <值>] [--max-items <值>] [--cli-input-json <值>] [--starting-令牌 <值>] [--page-size <值>] [--generate-cli-sculpture <值>]
获取函数 get-function --function-name <值> [--qualifier <值>] [--cli-input-json <值>] [--generate-cli-sculpture <值>]
获取功能配置 get-function-configuration --function-name <值> [--qualifier <值>] [--cli-input-json <值>] [--generate-cli-sculpture <值>]
获取帐户设置 get-account-settings [--cli-input-json <值>] [--generate-cli-骨骼 <值>]
更新功能配置 update-function-configuration --function-name <值> [--role <值>] [--handler <值>] [--description <值>] [--timeout <值>] [--内存- size <值>] [--vpc-config <值>] [--environment <值>] [--runtime <值>] [--dead-letter-config <值>] [--kms-key- arn <值>] [--tracing-config <值>] [--revision-id <值>] [--cli-input-json <值>] [--generate-cli-sculpture <值>]
更新功能代码 update-function-code --function-name <值> [--zip-file <值>] [--s3-bucket <值>] [--s3-key <值>] [--s3-object-版本 <值>] [--发布 | --no-publish] [--dry-run | --no-publish] --no-dry-run] [--revision-id <值>][--cli-input-json <值>][--generate-cli-sculpture <值>]
删除功能 删除函数 --function-name <值> [--qualifier <值>] [--cli-input-json <值>] [--generate-cli-sculpture <值>]

现在,让我们一一详细讨论这些命令。

创建函数

该 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 (string) - 这采用函数的名称。该名称可以是 64 位字符。

--runtime(string) - 这里您需要指定运行时环境,即语言选择。运行时的详细信息如下 -

可用选项 运行
Python v3.6 python3.6
Python v2.7 蟒蛇2.7
NodeJS v6.10 Nodejs6.10
NodeJS v8.10 Nodejs8.10
爪哇 java8
C#1 点网核心1.0
C#2 点网核心2.0
GO1.x

--role(string) - 这将是 lambda 策略的名称,即授予 lambda 函数用于访问其他服务的角色。它将具有指定角色的权限。

--handler (string) - 这是 lambda 代码执行将开始的处理程序的名称。

  • 对于nodejs,处理程序名称是我们导出的模块名称。
  • 对于java,它是package.classname :: handler或package.classname
  • 对于 python,处理程序是文件名。

--code (结构) −AWS Lambda 代码

--description (string) − AWS Lambda 函数的描述

--timeout (integer) - timeout 表示 lambda 函数必须终止执行的时间。默认为 3 秒。

--memory-size (integer) - 这是分配给 aws lambda 函数的内存。AWS将根据给定的内存分配CPU和内存分配量。

--environment(结构) - 它是一个具有 aws lambda 函数所需的环境详细信息的对象。

e.g : Variables = {Name1 = string, Name2 = string}

--kms-key-arn(字符串) - 这是用于加密环境变量的亚马逊资源名称(ARN)。如果未提供,它将采用默认设置进行加密。

--zip-file (blob) - 包含代码详细信息的 zip 文件的路径。

--cli-input-json (string):根据提供的 JSON 字符串执行服务操作。JSON 字符串遵循 --generate-cli-sculpture 提供的格式。如果在命令行上提供了其他参数,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 并从Roles中选择您想要的角色。该角色的 ARN 详细信息显示如下。在aws cli中将角色 ARNcreate-function结合使用。

摘要 CLI

在这里观察角色 arn 是: arn:aws:iam::625297745038:role/lambdaapipolicy

具有创建功能值的命令如下 -

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函数显示如下:

命令行功能

功能的详细信息如下所示 -

命令行代码

配置的详细信息如下:

CLI 角色

您可以测试该功能并检查输出,如下所示 -

CLI 执行

相应的日志输出如下所示 -

命令行输出

列表函数

此 api 提供了迄今为止在 AWS Lambda 中创建的函数列表。

包含的命令

以下是与此 API 相关的命令 -

list-functions
[--master-region <value>]
[--function-version <value>]
[--max-items <value>]
[--cli-input-json <value>]

列表功能下的选项

以下是您可以在此 list-functions api 下使用的各种选项 -

--master-region(string) - 可选。需要显示功能的区域。

--function-version(string) - 可选。这将给出函数版本。

--max-items(整数) − 可选。这将按照指定的值给出项目。

--cli-input-json(string) - 可选。将根据提供的json文件执行操作。

带有值列表函数的命令如下 -

aws lambda list-functions --max-items 3

该命令显示详细信息如下 -

命令行显示

获取函数

该 api 将提供函数的详细信息以及一个 url 链接,其中包含使用 create-function 上传的 zip 文件。包含邮政编码详细信息的网址仅在 10 分钟内有效。

包含的命令

以下是与此 api 相关的命令 -

get-function
--function-name <value>
[--qualifier <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

包含选项

--function-name - AWS Lambda 函数的名称。您还可以指定函数的 Amazon 资源名称。

--qualifier(string) - 可选。函数版本可用于获取函数的详细信息。

具有 get-function 值的命令是 -

aws lambda get-function --function-name awslambdausingcli

命令显示详细信息如下 -

包含选项

它提供了已上传邮政编码的网址。在上面的例子中,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

获取功能配置

这将提供 AWS Lambda 函数的配置详细信息。

以下是与此 api 一起使用的命令 -

get-function-configuration
--function-name <value>
[--qualifier <value>]

以下是与使用的选项

--function-name (string) - aws lambda 函数的名称。您还可以指定函数的 Amazon 资源名称。

--qualifier(string) -可选。函数版本可用于获取函数的详细信息。

具有 get-function 值的命令是 -

aws lambda get-function-configuration --function-name awslambdausingcli

该命令显示详细信息如下 -

获取函数。

获取帐户设置

此 api 提供帐户设置。

涉及的命令

您可以与此 api 一起使用的命令是 -

get-account-settings
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

涉及的选项

您可以在此 api 中使用以下选项 -

--cli-input-json(string) -根据提供的 json 字符串执行服务。

--generate-cli-sculpture(string) -它打印 json 输出而不发送 API 请求。

您可以使用以下命令获取帐户设置 -

aws lambda get-account-settings

执行上面给出的命令时,您可以看到以下输出 -

涉及期权

更新功能配置

此 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(string) -可选。功能的描述。

--timeout(integer) -可选。aws lambda 函数终止所需的时间。

--内存大小(整数)-可选。这是分配给 aws lambda 函数的内存。AWS将根据给定的内存分配CPU和内存分配量。

--环境(结构)-可选。它是一个具有 aws lambda 函数所需的环境详细信息的对象。

e.g: Variables = {Name1 = string, Name2 = string}

--runtime(string) -这里您需要指定运行时环境,即语言选择。

运行时的详细信息如下表所示 -

可用选项 运行
Python v3.6 python3.6
Python v2.7 蟒蛇2.7
NodeJS v6.10 Nodejs6.10
NodeJS v8.10 Nodejs8.10
爪哇 java8
C#1 点网核心1.0
C#2 点网核心2.0
GO1.x

--cli-input-json(字符串)-可选。这将按照提供的 json 字符串中指定的方式对 api 执行操作。

--generate-cli-骨骼(字符串)-可选。这将输出所有详细信息的 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(string) − aws lambda 函数的名称

--zip-file (blob) -可选。包含要更新的代码的 zip 文件的路径。

--s3-bucket(string) -可选。包含已上传代码的 zip 文件的 S3 存储桶名称。

--s3-key(字符串) -可选。必须上传的AWS s3对象键名称。

--s3-object-version (字符串) −可选。AWS s3 对象版本。

--cli-input-json(字符串)-可选。这将按照提供的 json 字符串中指定的方式对 api 执行操作。

--generate-cli-骨骼(字符串)-可选。这将输出所有详细信息的 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 目的

AWS 控制台的显示如下所示 -

AWS CLI 控制台

相应的日志输出如下所示 -

命令行日志

删除功能

删除aws cli api 将删除给定函数。

包含的命令

此处给出了相同的命令详细信息 -

delete-function
--function-name <value>
[--qualifier <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

包含选项

此 api 中包含的选项如下所示 -

--function-name(string) -这将采用 lambda 函数名称或 aws lambda 函数的 arn。

--qualifier (string) -这是可选的。您可以在此处指定需要删除的 aws lambda 的版本。

-- cli-input-json(string) -根据提供的 JSON 字符串执行服务操作。JSON 字符串遵循 --generate-cli-sculpture 提供的格式。如果在命令行上提供了其他参数,CLI 值将覆盖 JSON 提供的值。

--generate-cli-sculpture(string) -它将 json 骨架打印到标准输出,而不发送 API 请求。

您可以使用以下带有值的命令来实现此目的 -

aws lambda delete-function --function-name "lambdatestcli"

删除功能

现在,观察到该函数不会出现在 AWS Lambda 函数列表中 -

CLI 关键字