- 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 函数列表中:−