上传组件以部署到您的核心设备 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

上传组件以部署到您的核心设备

完成组件版本后,您可以将组件上传到 AWS 云中的 AWS AWS IoT Greengrass。然后,您可以将组件部署到其他核心设备。

上传组件时,请执行以下操作:

  1. 将组件构件上传到 S3 存储桶。

  2. 将每个构件的 Amazon S3 URI 添加到组件配方。

  3. 从组件配方在 AWS AWS IoT Greengrass 中创建组件版本。

注意

您上传的每个组件版本必须是唯一的。上传组件版本后,无法对其进行编辑。

上传组件 (AWS CLI)

可以使用以下过程通过 AWS CLI 上传组件。您可以在开发计算机上或 AWS AWS IoT Greengrass 核心设备上执行以下步骤。

上传组件 (AWS CLI)

  1. 如果组件使用 AWS AWS IoT Greengrass 服务中存在的版本,则必须更改组件的版本。在文本编辑器中打开配方,递增版本并保存文件。选择反映您对组件所做的更改的新版本。

    注意

    AWS IoT Greengrass 使用组件的语义版本。语义版本遵循 major.minor.patch 编号系统。例如,version 1.0.0 表示组件的第一个主要版本。有关更多信息,请参阅语义版本规范

  2. 如果您的组件具有构件,请执行以下操作:

    1. 将组件的构件上传到 AWS 账户中的 S3 存储桶。

      提示

      我们建议您在 S3 存储桶中构件的路径中包含组件名称和版本。此命名方案可帮助您维护组件先前版本使用的构件,因此您可以继续支持先前的组件版本。

      运行以下命令以将构件文件上传到 S3 存储桶。Replace DOC-EXAMPLE-BUCKET 替换为存储桶的名称,然后替换 artifacts/com.example.HelloWorld/1.0.0/artifact.py 替换为构件文件的路径。

      aws s3 cp artifacts/com.example.HelloWorld/1.0.0/artifact.py s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/artifact.py
      重要

      默认情况下,核心设备角色不允许访问 S3 存储桶。如果这是您首次使用此 S3 存储桶,则必须向角色添加权限以允许核心设备从此 S3 存储桶检索组件构件。有关更多信息,请参阅允许访问组件构件的 S3 存储桶

    2. 将名为 的列表Artifacts添加到组件配方(如果不存在)。该Artifacts列表将显示在每个清单中,其中定义了组件在它支持的每个平台上的要求(或组件对所有平台的默认要求)。

    3. 将每个构件添加到构件列表中,或更新现有构件的 URI。Amazon S3 URI 由存储桶名称和存储桶中构件对象的路径组成。您的构件的 Amazon S3 URIs应类似于以下示例。

      s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/artifact.py

    完成这些步骤后,您的配方应具有类似于以下内容的 Artifacts 列表。

    JSON
    { ... "Manifests": [ { "Lifecycle": { ... } "Artifacts": [ { "URI": "s3://DOC-EXAMPLE-BUCKET/artifacts/MyGreengrassComponent/1.0.0/artifact.py" } ] } ] }
    注意

    您可以为 ZIP 构件添加 "Unarchive": "ZIP" 选项,以配置 AWS AWS IoT Greengrass 核心软件以在组件部署时解压缩构件。

    YAML
    ... Manifests: - Lifecycle: ... Artifacts: - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/MyGreengrassComponent/1.0.0/artifact.py
    注意

    您可以为 ZIP 构件添加 Unarchive: ZIP 选项,以配置 AWS AWS IoT Greengrass 核心软件以在组件部署时解压缩构件。

    有关配方的更多信息,请参阅AWS AWS IoT Greengrass 组件配方参考

  3. 使用 AWS AWS IoT Greengrass 控制台从配方文件创建组件。

    运行以下命令以从配方文件创建组件。此命令将创建 组件并将其作为私有 AWS IoT IoT Greengrass 组件发布到您的 AWS 账户中。Replace path/to/recipeFile 替换为配方文件的路径。

    aws greengrassv2 create-component-version \ --inline-recipe fileb://path/to/recipeFile

    从响应中复制 arn 以在下一步骤中检查组件的状态。

    注意

    AWS AWS IoT Greengrass 在您创建组件时计算每个构件的摘要。这意味着,在创建组件后,您将无法修改 S3 存储桶中的构件文件。如果您这样做,则包含此组件的部署将失败,因为文件摘要不匹配。如果您修改构件文件,则必须创建组件的新版本。

  4. AWS AWS IoT Greengrass 服务中的每个组件都有一个状态。运行以下命令以确认您在此过程中上传的组件版本的状态。Replace com.example.HelloWorld1.0.0 替换为要查询的组件版本。将 arn 替换为上一步中的 ARN。

    aws greengrassv2 describe-component \ --arn "arn:aws:greengrass:region:account-id:components:com.example.HelloWorld:versions:1.0.0"

    此操作将返回包含组件元数据的响应。元数据包含一个 status 对象,其中包含组件状态和任何错误(如果适用)。

    当组件状态为 时DEPLOYABLE,您可以将组件部署到设备。有关更多信息,请参阅将 AWS AWS IoT Greengrass 组件部署到设备