AWS Snowball
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本指南适用于 Snowball Edge。如果您正在查找 Snowball 的相关文档,请参阅 AWS Snowball 用户指南

由 AWS IoT Greengrass 提供支持的 Lambda 入门

要开始在 Snowball Edge 上使用 由 AWS Greengrass 提供支持的 AWS Lambda 函数,请执行以下步骤:

将 AWS IoT Greengrass 服务角色与您的账户关联

在将 AWS IoT Greengrass 用于 Snowball Edge 核心设备之前,必须将 AWS IoT Greengrass 服务角色与您的账户相关联。此关联允许 AWS IoT Greengrass 访问您的 Lambda 函数和 AWS IoT 资源。如果在关联服务角色之前尝试创建 Snowball Edge 任务,则任务创建请求将失败。

以下过程显示了如何在云中配置和存储 AWS IoT Greengrass 设置。此配置意味着,您可以推送对 Snowball Edge 的 Lambda 函数更改以及对 AWS IoT Greengrass 组中其他设备的更改。第一个过程使用 AWS Identity and Access Management (IAM) 控制台,第二个过程使用 AWS Command Line Interface (AWS CLI)。

在 IAM 控制台中创建 AWS IoT Greengrass 服务角色

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 对于 Role Type,选择 AWS Greengrass Role

  3. 选择 AWSGreengrassResourceAccessPolicy,然后选择 Next Step

  4. 键入角色的名称,然后选择 Create Role

创建角色后,记下该角色的 Amazon 资源名称 (ARN),并将其用于下一个过程。

将 AWS IoT Greengrass 服务角色与您的账户关联

  1. 在计算机上安装 AWS CLI (如果您尚未这么做)。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的安装 AWS 命令行界面

  2. 在计算机上配置 AWS CLI (如果您尚未这么做)。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的配置 AWS CLI

  3. 在计算机上打开一个终端,并使用您在第一个过程中创建的 AWS IoT Greengrass 角色 ARN 运行以下 AWS CLI 命令。

    aws greengrass associate-service-role-to-account --role-arn arn:aws:iam::123EXAMPLE12:role/GreengrassRole

现在,您可以为 Snowball Edge 创建一个任务,并使用 由 AWS Greengrass 提供支持的 AWS Lambda。

为 Snowball Edge 配置 AWS IoT Greengrass

为 Snowball Edge 创建计算任务时,该服务会自动配置以下 AWS IoT Greengrass 元素:

  • AWS IoT Greengrass 核心软件 – AWS IoT Greengrass 可分发包已预安装在 Snowball Edge 上。

  • AWS IoT Greengrass 组 – 当您创建计算任务时,将会创建和预置一个名为 JobID_group 的 AWS IoT Greengrass 组。此组的核心名为 JobID_core,并拥有一个名为 JobID_s3adapter 的设备。适用于 Snowball 的 Amazon S3 Adapter 注册为您的 AWS IoT Greengrass 组中的 IoT 设备。进行此注册的原因是,适配器将为 Snowball Edge 上的存储桶的每个 Amazon S3 PUT 对象操作发送 MQTT 消息。

如果您想对与 Snowball Edge 关联的 AWS IoT Greengrass 组进行其他配置更改,可以在解锁设备并将其连接到 Internet 后进行更改。

创建任务

在 AWS Snowball 管理控制台中创建一个任务,并将至少一个已发布 Lambda 函数的 Amazon 资源名称 (ARN) 与一个存储桶相关联。有关创建您的第一个任务的演练,请参阅AWS Snowball Edge 入门:您的第一个任务

您在创建任务期间选择的所有 Lambda 函数都由与 适用于 Snowball 的 Amazon S3 Adapter 关联的 IoT 设备发送的 MQTT 消息触发。每当对 AWS Snowball Edge 设备上的存储桶执行 Amazon S3 PUT 对象操作时,都会触发这些 MQTT 消息。

连接到 Internet 以更新 AWS IoT Greengrass 组证书

在收到 Snowball Edge 后,解锁设备,然后将其连接到 Internet 至少一分钟。将设备连接到 Internet 使云中的 AWS IoT Greengrass 服务可以发送运行 Snowball Edge 所需的 AWS IoT Greengrass 证书。之后,您可以从 Internet 断开设备。关联的 AWS IoT Greengrass 组随后以脱机模式工作。

重要

当本地 AWS IoT Greengrass 组中的任何设备的 IP 地址发生变化时,将 Snowball Edge 重新连接到 Internet,以便它获得新证书。

在 Snowball Edge 上使用由 AWS Greengrass 提供支持的 Lambda 函数

除非另有设定,否则 Lambda 函数将由与 适用于 Snowball 的 Amazon S3 Adapter 关联的 IoT 设备发送的 MQTT 消息触发。这些 MQTT 消息又由 Amazon S3 PUT 对象操作触发。Amazon S3 PUT 对象操作可通过文件接口(使用写入操作)和 AWS CLI(使用 适用于 Snowball 的 Amazon S3 Adapter)执行,也可以通过由您自行设计的某个开发工具包或 REST 应用程序以编程方式执行。

您可以使用 由 AWS Greengrass 提供支持的 AWS Lambda 函数针对云中 AWS 服务之间的公共终端节点执行 Python 代码。为了让此 Python 代码执行顺利进行,您的 AWS Snowball Edge 设备需要连接到 Internet。有关更多信息,请参阅 AWS Lambda Developer Guide

更新现有函数

您可在控制台中更新现有 Lambda 函数。如果您这样做,并且您的 AWS Snowball Edge 设备连接至 Internet,则部署代理将通知每个 Lambda 函数更新后的 AWS IoT Greengrass 组配置。有关更多信息,请参阅 AWS IoT Greengrass 开发人员指南 中的创建部署

添加新函数

收到 Snowball Edge 并将其解锁和连接到 Internet 后,即可添加或删除其他 Lambda 函数。这些新的 Lambda 函数不必由 Amazon S3 PUT 对象操作触发。相反,您编程为触发新函数的事件将执行函数触发,就像 AWS IoT Greengrass 组中运行的典型 Lambda 函数一样。

测试由 AWS IoT Greengrass 函数提供支持的 Lambda

在 Lambda 控制台中测试用 Python 编码的函数时,您可能会遇到错误。如果出现这种情况,请参阅 AWS Lambda Developer Guide 中的出错时重试