选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

创建部署

聚焦模式
创建部署 - AWS IoT Greengrass

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

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

您可以创建以事物或事物组为目标的部署。

创建部署时,需要配置要部署的软件组件以及部署作业如何扩展到目标设备。您可以在提供给 AWS CLI的 JSON 文件中定义部署。

部署目标可确定要在哪些设备上运行组件。要部署到一台核心设备,请指定一个事物。要部署到多台核心设备,请指定包含这些设备的事物组。有关如何配置事物组的更多信息,请参阅《AWS IoT 开发人员指南》中的静态事物组动态事物组

按照本节中的步骤将部署创建到目标中。有关如何在具有部署的目标上更新软件组件的更多信息,请参阅 修改部署

警告

CreateDeployment操作可以从核心设备上卸载组件。如果某个组件存在于之前的部署中(而不是新部署中),则核心设备将卸载该组件。为避免卸载组件,请先使用该ListDeployments操作来检查部署目标是否已有部署。然后,在创建新部署时,使用该GetDeployment操作从现有部署开始。

要创建部署(AWS CLI),请执行以下操作
  1. 创建一个名为 deployment.json 的文件,然后将以下 JSON 对象复制到该文件中。targetArn替换为部署目标 AWS IoT 的事物或事物组的 ARN。事物和事物组 ARNs 采用以下格式:

    • 事物:arn:aws:iot:region:account-id:thing/thingName

    • 事物组:arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  2. 检查部署目标是否有要修改的现有部署。执行以下操作:

    1. 运行以下命令,列出部署目标的部署。targetArn替换为目标 AWS IoT 事物或事物组的 ARN。

      aws greengrassv2 list-deployments --target-arn targetArn

      响应中包含目标最新部署的列表。如果响应为空,则表示目标没有现有部署,您可以跳到 步骤 3。否则,请复制响应中的 deploymentId,以便在下一步中使用。

      注意

      您还可以修改除目标最新修订之外的部署。指定 --history-filter ALL 参数以列出目标的所有部署。然后,复制要修改的部署的 ID。

    2. 运行以下命令,获取部署的详细信息。这些详细信息包括元数据、组件和作业配置。deploymentId 应替换为上一步中的 ID。

      aws greengrassv2 get-deployment --deployment-id deploymentId

      响应包含部署的详细信息。

    3. 从上一个命令的响应中,将以下任何键值对复制到 deployment.json 中。您可以为新部署更改这些值。

      • deploymentName – 部署的名称。

      • components – 部署的组件。要卸载组件,请将其从该对象中移除。

      • deploymentPolicies – 部署的策略。

      • iotJobConfiguration – 部署的作业配置。

      • tags – 部署的标签。

  3. (可选)定义部署的名称。deploymentName替换为部署的名称。

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. 添加每个组件以部署目标设备。为此,请向 components 对象添加键值对,其中键是组件名称,值是包含该组件详细信息的对象。为添加的每个组件指定以下详细信息:

    • version – 要部署的组件版本。

    • configurationUpdate – 要部署的配置更新。更新是一项修补操作,用于修改组件在每台目标设备上的现有配置,或者修改组件的默认配置(如果目标设备上不存在该配置)。您可以指定以下配置更新:

      • 重置更新(reset)–(可选)JSON 指针列表,用于定义要在目标设备上重置为默认值的配置值。C AWS IoT Greengrass ore 软件在应用合并更新之前应用重置更新。有关更多信息,请参阅 重置更新

      • 合并更新(merge)–(可选)JSON 文档,用于定义要合并到目标设备的配置值。必须将 JSON 文档序列化为字符串。有关更多信息,请参阅 合并更新

    • runWith—(可选) AWS IoT Greengrass 核心软件用于在核心设备上运行此组件进程的系统进程选项。如果您省略了runWith对象中的参数,则 AWS IoT Greengrass Core 软件将使用您在 Gre engrass nucleus 组件上配置的默认值。

      您可以指定以下任意选项:

      • posixUser – 用于在 Linux 核心设备上运行此组件的 POSIX 系统用户和(可选的)组。用户和组(如果已指定)必须存在于每台 Linux 核心设备上。使用以下格式指定由半角冒号(:)分隔的用户和组:user:group。组是可选的。如果您未指定群组,则 AWS IoT Greengrass Core 软件将使用该用户的主群组。有关更多信息,请参阅 配置运行组件的用户

      • windowsUser – 用于在 Windows 核心设备上运行此组件的 Windows 用户。用户必须存在于每台 Windows 核心设备上,其用户名和密码必须存储在 LocalSystem 账户的凭据管理器实例中。有关更多信息,请参阅 配置运行组件的用户

        此功能适用于 Greengrass Nucleus 组件 v2.5.0 及更高版本。

      • systemResourceLimits – 应用于此组件进程的系统资源限制。您可以将系统资源限制应用于通用和非容器化 Lambda 组件。有关更多信息,请参阅 配置组件的系统资源限制

        您可以指定以下任意选项:

        • cpus此组件进程可在核心设备上使用的最大 CPU 时间。核心设备的总 CPU 时间等于 CPU 核心的设备数量。例如,在一台有 4 个 CPU 核心的核心设备上,您可以将此值设置为 2,以便将此组件进程限制为使用每个 CPU 核心的 50%。在一台有 1 个 CPU 核心的设备上,您可以将此值设置为 0.25,以便将此组件进程限制为使用 CPU 的 25%。如果将此值设置为大于 CPU 内核数的数字,则 AWS IoT Greengrass Core 软件不会限制组件的 CPU 使用率。

        • memory此组件进程可在核心设备上使用的最大 RAM 数量(以千字节表示)。

        此功能适用于 Greengrass nucleus 组件的 v2.4.0 及更高版本。 AWS IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。

     

    例 基本配置更新示例

    以下示例 components 对象指定部署组件 com.example.PythonRuntime,该组件需要名为 pythonVersion 的配置参数。

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }
    例 使用重置更新和合并更新的配置更新示例

    以一个具有以下默认配置的工业控制面板组件 com.example.IndustrialDashboard 为例。

    { "name": null, "mode": "REQUEST", "network": { "useHttps": true, "port": { "http": 80, "https": 443 }, }, "tags": [] }

    以下配置更新指定了以下说明:

    1. 将 HTTPS 设置重置为默认值(true)。

    2. 将工业标签列表重置为空列表。

    3. 将用于标识两台锅炉温度和压力数据流的工业标签列表合并。

    { "reset": [ "/network/useHttps", "/tags" ], "merge": { "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] } }

    以下示例 components 对象指定部署此工业控制面板组件和配置更新。

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } } }
  5. (可选)为部署定义部署策略。您可以配置核心设备何时可以安全地应用部署,或者在核心设备无法应用部署时该怎么做。为此,请将 deploymentPolicies 对象添加到 deployment.json 中,然后执行以下任意操作:

    1. (可选)指定组件更新策略(componentUpdatePolicy)。此策略定义了部署是否允许组件推迟更新,直到组件准备好更新。例如,组件可能需要清理资源或完成关键操作,然后才能重新启动以应用更新。此策略还定义了组件响应更新通知所需的时长。

      此策略是具有以下参数的对象:

      • action –(可选)是否通知组件并等待组件在准备好更新时报告。从以下选项中进行选择:

        • NOTIFY_COMPONENTS – 部署会在其停止并更新该组件前通知每个组件。组件可以使用 SubscribeToComponentUpdates IPC 操作来接收这些通知。

        • SKIP_NOTIFY_COMPONENTS – 部署不会通知组件或等待它们可安全更新。

        默认值为 NOTIFY_COMPONENTS

      • timeoutInSeconds 每个组件通过 DeferComponentUpdate IPC 操作响应更新通知所需的时长(以秒为单位)。如果组件在这段时间内没有响应,则部署将在核心设备上继续进行。

        默认值为 60 秒。

    2. (可选)指定配置验证策略(configurationValidationPolicy)。此策略定义了每个组件验证部署中的配置更新所需的时长。组件可以使用 SubscribeToValidateConfigurationUpdates IPC 操作为自己的配置更新订阅通知。然后,组件可以使用 SendConfigurationValidityReport IPC 操作来告诉 C AWS IoT Greengrass ore 软件配置更新是否有效。如果配置更新无效,则部署失败。

      此策略是具有以下参数的对象:

      • timeoutInSeconds(可选)每个组件验证配置更新所需的时长(以秒为单位)。如果组件在这段时间内没有响应,则部署将在核心设备上继续进行。

        默认值为 30 秒。

    3. (可选)指定故障处理策略(failureHandlingPolicy)。此策略是用于定义部署失败时是否回滚设备的字符串。从以下选项中进行选择:

      • ROLLBACK— 如果在核心设备上部署失败,则 AWS IoT Greengrass 核心软件会将该核心设备回滚到以前的配置。

      • DO_NOTHING— 如果在核心设备上部署失败,则 AWS IoT Greengrass 核心软件会保留新的配置。如果新配置无效,这可能会导致组件损坏。

      默认值为 ROLLBACK

    deployment.json 中的部署可能类似于以下示例:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" } }
  6. (可选)定义部署如何停止、推出或超时。 AWS IoT Greengrass 使用 AWS IoT Core 作业将部署发送到核心设备,因此这些选项与 AWS IoT Core 作业的配置选项相同。有关更多信息,请参阅《AWS IoT 开发人员指南》中的作业推出和中止配置

    要定义作业选项,请将 iotJobConfiguration 对象添加到 deployment.json 中。然后,定义要配置的选项。

    deployment.json 中的部署可能类似于以下示例:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" }, "iotJobConfiguration": { "abortConfig": { "criteriaList": [ { "action": "CANCEL", "failureType": "ALL", "minNumberOfExecutedThings": 100, "thresholdPercentage": 5 } ] }, "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": 5, "incrementFactor": 2, "rateIncreaseCriteria": { "numberOfNotifiedThings": 10, "numberOfSucceededThings": 5 } }, "maximumPerMinute": 50 }, "timeoutConfig": { "inProgressTimeoutInMinutes": 5 } } }
  7. (可选)为部署添加标签(tags)。有关更多信息,请参阅 标记您的 AWS IoT Greengrass Version 2 资源

  8. 要从 deployment.json 创建部署,请运行以下命令。

    aws greengrassv2 create-deployment --cli-input-json file://deployment.json

    响应中包含用于标识此部署的 deploymentId。您可以使用部署 ID 来检查部署的状态。有关更多信息,请参阅 检查部署状态

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。