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

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

发布要部署到核心设备的组件

构建或完成组件版本后,可以将其发布到Amazon IoT Greengrass服务。然后,您可以将它部署到 Greengrass 核心设备。

如果您将Greengrass 开发套件 CLI (GDK CLI)开发和构建组件您可以使用 GDK CLI将组件发布到Amazon Web Services 云. 否则为使用内置 shell 命令和Amazon CLI发布组件。

您还可以使用Amazon CloudFormation创建组件和其他Amazon来自模板的资源。有关更多信息,请参阅 。是什么Amazon CloudFormation?AWS::GreengrassV2::ComponentVersion中的Amazon CloudFormation用户指南.

发布组件(GDK CLI)

按照本节中的说明使用 GDK CLI 发布组件。GDK CLI 将构建工件上传到 S3 存储桶,更新配方中的工件 URI,然后根据配方创建组件。您可以指定 S3 存储桶和区域,以便在GDK CLI 配置文件.

如果您使用 GDK CLI v1.1.0 或更高版本,可以指定--bucket参数,以指定 GDK CLI 在其中上传组件的工件的 S3 存储桶。如果您不指定此参数,GDK CLI 将上传到名称为的 S3 存储桶。bucketPrefix-region-accountId在其中,BucketPrefix领域是你在中指定的值gdk-config.json, 和accountId是您的Amazon Web Services 账户ID。如果存储桶不存在,GDK CLI 会创建存储桶。

重要

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

发布 Greengrass 组件(GDK CLI)

  1. 在命令提示符或终端中打开组件文件夹。

  2. 如果您尚未设置,请构建 Greengrass 组件。这些区域有:构建组件命令在greengrass-build组件文件夹中的文件夹。运行以下 命令。

    gdk component build
  3. 将组件发布到Amazon Web Services 云. 这些区域有:组件发布命令将组件的工件上传到 Amazon S3,然后使用每个工件的 URI 更新组件的配方。然后,它在Amazon IoT Greengrass服务。

    注意

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

    如果你指定NEXT_PATCH对于 GDK CLI 配置文件中的组件版本,GDK CLI 使用下一个修补程序版本,该修补程序版本在Amazon IoT Greengrass服务。

    运行以下 命令。

    gdk component publish

    输出告诉你 GDK CLI 创建的组件的版本。

    发布组件后,可以将组件部署到核心设备。有关更多信息,请参阅 部署Amazon IoT Greengrass组件到设备

发布组件(shell 命令)

使用以下过程可以使用 shell 命令和Amazon Command Line Interface(Amazon CLI)。发布组件时,可执行以下操作:

  1. 将组件构件发布到 S3 存储桶。

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

  3. 在中创建组件版本Amazon IoT Greengrass来自组件配方。

注意

您上传的每个组件版本必须是唯一的。请确保上传了正确的组件版本,因为上传后无法对其进行编辑。

您可以按照以下步骤从开发计算机或 Greengrass 核心设备发布组件。

发布组件(shell 命令)

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

    注意

    Amazon IoT Greengrass对组件使用语义版本。语义版本遵循重大的.未成年人.补丁号码系统。例如,版本1.0.0代表组件的第一个主要版本。有关更多信息,请参阅 。语义版本规范.

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

    1. 将组件的构件发布到您的 S3 存储桶Amazon Web Services 账户.

      提示

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

      运行以下命令,将构件文件发布到 S3 存储桶。ReplaceDOC-例子桶将替换为存储桶的名称,然后将其替换为神器 /com.例例.HelloWorld/1.0.0/文件.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 URI 应类似于以下示例。

      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", "Unarchive": "NONE" } ] } ] }
    注意

    您可以添加"Unarchive": "ZIP"用于 ZIP 工件的选项来配置Amazon IoT Greengrass用于在组件部署时解压缩工件的核心软件。

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

    您可以使用Unarchive: ZIP选项来配置Amazon IoT Greengrass在组件部署时解压缩 ZIP 项目的核心软件。有关组件中如何使用 ZIP 构件的更多信息,请参阅工件:解压缩路径配方变量.

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

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

    运行以下命令以从配方文件创建组件。此命令创建组件并将其作为私有发布Amazon IoT Greengrass您的组件Amazon Web Services 账户. Replace路径/到/食谱文件使用配方文件的路径。

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

    将复制到arn从响应中查看下一步中组件的状态。

    注意

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

  4. 中的每个组件Amazon IoT Greengrass服务有状态。运行以下命令以确认在此过程中发布的组件版本的状态。Replacecom.例.Hello World1.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,可以将组件部署到设备。有关更多信息,请参阅部署Amazon IoT Greengrass组件到设备