使用AWS CLI创建和部署

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

安装AWS CLI

本节将指导您完成在各种操作系统上安装AWS CLI.按照给出的步骤操作并观察相应的屏幕截图.

对于Windows

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

  • 对于Windows 64 bit :  适用于Windows的AWS CLI MSI安装(64位)

  • 对于Windows 32位 :  适用于Windows的AWS CLI MSI安装(32)

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

安装AWS

接下来,设置 windows中的环境路径,如下面的屏幕截图所示 :

环境路径

完成后,您可以使用以下命令:命令提示符,以查看 aws cli 是否已安装&减去;

aws --version

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

AWS Cli版本

适用于Linux/Mac

用于在Linux上安装Mac,你需要Python 2.6.3或更高版本的verison.然后,使用以下命令进行进一步的安装过程 :

$ 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

Access Key

参考适用于AWS CLIS的命令

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

aws cli命令的名称命令参考
创建功能 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&lt ;值&GT; [--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]
[ -  dr-run | --no-dry-run] [--revision-id< value>] [ -  cli-input-json< value>] [ -  generate-cli-skeleton< value>]
删除功能 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(string) : 这需要函数的名称.名称可以是64位字符.

 - 运行时(字符串) : 在这里,您需要指定运行时环境,即语言选择.运行时的详细信息如下所示 :

可用选项runtime
Python v3.6python3.6
Python v2.7python2.7
NodeJS v6.10nodejs6.10
NodeJS v8.10nodejs8.10
Javajava8
C#1dotnetcore1.0
C#2dotnetcore2.0
Gogo1.x

 - 角色(字符串) : 这将是lambda策略的名称,即为lambda函数提供的用于访问其他服务的角色.它将根据指定的角色拥有权限.

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

  • 对于nodejs,处理程序名称是我们导出的模块名称.

  • 对于java,它是package.classname :: handler或package.classname

  • 对于python,handler是nameofhefile.

 - 代码(结构) :  AWS Lambda代码

 - 描述(字符串) :  AWS Lambda函数的描述

 - 超时(整数) :  timeout将具有lambda函数终止执行的时间.默认值为3秒.

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

 - 环境(结构) : 它是一个具有aws lambda函数所需环境细节的对象.

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

 -  kms-key-arn(string) : 这是用于加密环境变量的亚马逊资源名称(ARN).如果没有提供,它将采用默认设置进行加密.

 -  zip-file(blob) :  zip文件的路径,其中包含代码的详细信息.

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

现在,让我们使用runtime作为nodejs创建一个简单的AWS Lambda函数,并添加一些控制台.要打印的日志.

考虑一个用于理解相同和减号的示例代码;

exports.handler = async (event) => {
   console.log("Using aws cli");
   return 'Hello from Lambda from aws cli!'
};

现在,压缩文件并将其存储为 awscli.zip .

获取ARN

对于角色,让我们使用我们创建的现有角色中的 arn .要获取ARN,您必须按照此处所示的步骤操作.观察附加和减去的相应屏幕截图;

步骤1

转到IAM并从角色中选择所需的角色.角色的ARN详细信息显示如下.在 aws cli 中使用 角色ARN 创建功能.

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输出

list-functions

此api给出了目前在AWS Lambda中创建的函数列表.

包含的命令

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

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

list-functions下的选项

以下是您可以在此列表中使用的各种选项 - 函数api :

 - 主区域(字符串) : 可选的.需要显示函数的区域.

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

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

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

值为 list-functions 的命令如下 :

aws lambda list-functions --max-items 3

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

Cli Display

get-function

这个api将提供函数的详细信息以及使用create-function上传zip文件的url链接.带有拉链详细信息的网址只有10分钟有效.

包含的命令

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

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

包含的选项

 - 功能名称 :  AWS Lambda函数的名称.您还可以指定该函数的Amazon资源名称.

 - 限定符(字符串) : 可选的.函数版本可用于获取函数的详细信息.

带有get函数值的命令是 :

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

get-function-configuration

这将给出AWS Lambda函数的配置详细信息.

以下是与此api&minus一起使用的命令;

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

以下是与

$一起使用的选项b $ b

 - 函数名(字符串) :   aws lambda函数的名称.您还可以指定函数的Amazon资源名称.

 - 限定符(字符串) :  可选.函数版本可用于获取详细信息功能.

带有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&minus使用以下选项;

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

 -  generate-cli-skeleton(string) :  它打印json输出而不发送API请求.

您可以使用以下命令进行get-account-settings :

aws lambda get- account-settings

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

update-function-configuration

此API有助于更新创建的AWS Lambda函数的配置详细信息.您可以更改内存,超时,处理程序,角色,运行时,描述等.

涉及的命令

以下是更新中涉及的命令-function-configuration api :

 
 update-function-configuration 
 --function-name< value> 
 [--role< value>] 
 [--handler< value>] 
 [--description< value>] 
 [--timeout< value&gt ;] 
 [--memory-size< value>] 
 [--environment< value>] 
 [ -  runtime< value>] 
 [ - cli-input-json< value>] 
 [--generate-cli-skeleton< value>]

涉及的选项

以下是update-function-configuration api&minus中涉及的选项;

 -  function-name :  名称aws lambda函数

 - 角色(字符串) :  可选.角色的ARN需要更新.

 - 处理程序(字符串) :  可选. aws lambda函数的处理程序详细信息.

 -  description(字符串) :  可选.函数说明.

 - 超时(整数)和减号; 可选.所需的时间使aws lambda函数可以终止.

 -  memory-size(整数) :  可选.这是给aws lambda函数的内存. AWS将根据给定的内存分配CPU和内存分配量.

 - 环境(结构) :  可选.它是一个在aws lambda函数中需要环境细节的对象.

例如:Variables = {Name1 = string,Name2 = string}

 - 运行时(字符串) :  在这里,您需要指定运行时环境,即语言选择.

运行时的详细信息显示在下面给出的表中 :

可用选项运行时
Python v3.6python3.6
Python v2.7python2.7
NodeJS v6.10nodejs6.10
NodeJS v8.10nodejs8.10
Javajava8
C#1dotnetcore1.0
C#2dotnetcore2.0
Gogo1.x

 -  cli-input-json(string) :  可选.这将对所提供的json字符串中指定的api执行操作.

 -  generate-cli-skeleton(string) :  可选.这将输出所有细节的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步

然后你可以看到以下输出作为显示 :

Cli Updated

步骤4

使用 update-function-configuration 后,AWS控制台中的显示如下 :

Cli Configuration

Update-function-code

此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&minus所涉及的选项;

 - 函数名(字符串) :   aws lambda函数的名称

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

 -  s3-bucket(字符串) :  可选. S3存储桶名称,其zip文件已上传代码.

 -  s3-key(字符串) :  可选. AWS s3对象密钥名称必须上传.

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

 -  cli-input-json(字符串) :  可选.这将对所提供的json字符串中指定的api执行操作.

 -  generate-cli-skeleton(string) :  可选.这将输出所有细节的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控制台

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

Cli记录

delete-function

删除 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.

 - 限定符(字符串) :  这是可选的.在这里你可以指定需要删除的aws lambda的版本.

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

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


您可以使用以下命令为此目的使用值 :

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


删除函数

现在,观察在AWS Lambda函数列表中看不到该函数 :

Cli Keywords