

终止支持通知：2026 年 10 月 7 日， AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建和打包 Lambda 函数
<a name="package"></a>

在此步骤中，您：
+ 创建包含函数代码和依赖项的 Lambda 函数部署程序包。
+ 使用 Lambda 控制台创建 Lambda 函数和上传部署程序包。
+ 发布 Lambda 函数的版本并创建指向该版本的别名。

 

1. 在你的电脑上，转到你在模块 3-1 中下载并提取的适用于 Python [创建并打包 Lambda 函数](create-lambda.md) 的 AWS IoT Greengrass 核心 SDK。

   本模块中的 Lambda 函数使用：
   + `examples\HelloWorldCounter` 中的 `greengrassHelloWorldCounter.py` 文件。这是您的 Lambda 函数代码。
   + `greengrasssdk` 文件夹。这是软件开发工具包。

1. 创建 Lambda 函数部署程序包：

   1. 将 `greengrasssdk` 文件夹复制到包含 `greengrassHelloWorldCounter.py` 的 `HelloWorldCounter` 文件夹中。

   1. 将 `greengrassHelloWorldCounter.py` 和 `greengrasssdk` 文件夹保存到名为 `hello_world_counter_python_lambda.zip` 的 `zip` 文件。`py` 文件和 `greengrasssdk` 文件夹必须位于该目录的根目录中。  
![\[显示“hello_word_counter_python_lambda.zip”的压缩内容的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-046.png)

      在已安装 `zip` 的类 UNIX 系统（包括 Mac 终端）上，您可以使用以下命令打包文件和文件夹：

      ```
      zip -r hello_world_counter_python_lambda.zip greengrasssdk greengrassHelloWorldCounter.py
      ```

   现在您已准备好创建您的 Lambda 函数和上传部署程序包。

1. 打开 Lambda 控制台，选择**创建函数**。

1. 选择**从头开始创作**。

1. 将您的函数命名为 **Greengrass\$1HelloWorld\$1Counter** 并设置其余字段，如下所示：
   + 对于**运行时系统**，选择 **Python 3.7**。
   + 对于**权限**，请保留默认设置。这将创建一个授予基本 Lambda 权限的执行角色。此角色未被使用 AWS IoT Greengrass。或者，您可以重复使用在模块 3-1 中创建的角色。

   选择 **Create function (创建函数)**。  
![\[“基本信息” 部分，“函数名称” 字段设置为 “Greengrass_ HelloWorld _Counter”，“运行时” 字段设置为 “Python 3.7”。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-023-3.png)

1. 上传您的 Lambda 函数部署软件包。

   1. <a name="lambda-console-upload"></a>在**代码**选项卡上的**代码源**下，选择**上传自**。从下拉列表中选择 **.zip 文件**。  
![\[“上传自”下拉列表中突出显示了.zip 文件。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. 选择**上传**，然后选择您的 `hello_world_counter_python_lambda.zip` 部署包。然后，选择**保存**。

   1. <a name="lambda-console-runtime-settings-para"></a>在函数的**代码**选项卡中，在**运行时设置**下选择**编辑**，然后输入以下值。
      + 对于**运行时系统**，选择 **Python 3.7**。
      + 对于**处理程序**，输入 **greengrassHelloWorldCounter.function\$1handler**。

   1. <a name="lambda-console-save-config"></a>选择**保存**。
**注意**  
 AWS Lambda 主机上的 “**测试**” 按钮不适用于此功能。 AWS IoT Greengrass 核心软件开发工具包不包含在控制台中独立运行 Greengrass Lambda 函数所需的模块。 AWS Lambda 这些模块（例如 `greengrass_common`）是在函数部署到您的 Greengrass 核心之后提供给它们的。

1. 发布函数的第一个版本：

   1. 在页面顶部的**操作**菜单上，选择**发布新版本**。对于**版本描述**，输入 **First version**。

   1. 选择**发布**。

1. 为函数版本创建别名。

   1. 从页面顶部的**操作**菜单中，选择**创建别名**。  
![\[“操作”菜单设置为“创建别名”的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. 对于**名称**，输入 **GG\$1HW\$1Counter**。

   1. 对于**版本**，选择 **1**。

   1. 选择**保存**。  
![\[“创建别名”屏幕，其中“名称”字段设置为“GG_HW_Counter”，“版本”字段设置为 1。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-048.png)

   别名可为您的Lambda 函数创建一个单一实体，可供 Greengrass 设备订阅。这样，每次修改函数后，您就不必使用新的 Lambda 函数版本号更新订阅。