本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建部署
您可以创建针对事物或事物组的部署。
创建部署时,您可以配置要部署的软件组件以及部署作业如何向目标设备推出。您可以在提供给Amazon CLI.
部署目标决定要在其上运行组件的设备。要部署到一个核心设备,请指定一个事物。要部署到多个核心设备,请指定包含这些设备的事物组。有关如何配置事物组的详细信息,请参阅静态事物组和动态事物组中的Amazon IoT开发人员指南.
按照本部分中的步骤创建到目标的部署。有关如何更新具有部署的目标上的软件组件的更多信息,请参阅修改部署.
警告
这些区域有:CreateDeployment操作可以从核心设备卸载组件。如果上一个部署中存在组件,而不是新部署中存在组件,则核心设备将卸载该组件。为避免卸载组件,请首先使用ListDeployments操作来检查部署的目标是否已有部署。然后,使用GetDeployment操作,以便在创建新部署时从该现有部署开始。
创建部署 (Amazon CLI)
-
创建一个名为的文件
deployment.json
,然后将以下 JSON 对象复制到该文件中。ReplacetargetArn
使用的 ARNAmazon IoT部署的目标事物或事物组。事物组 ARN 采用以下格式:-
Thing:
arn:aws:iot:
region
:account-id
:thing/thingName
-
事物组:
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
{ "targetArn": "
targetArn
" } -
-
检查部署目标是否有要修订的现有部署。执行以下操作:
-
运行以下命令以列出部署目标的部署。Replace
targetArn
使用目标的 ARNAmazon IoT事物或事物组。aws greengrassv2 list-deployments --target-arn
targetArn
响应包含目标的最新部署的列表。如果响应为空,则目标没有现有部署,您可以跳到步骤 3. 否则,请复制
deploymentId
从响应到下一步中使用。注意
您还可以修订目标的最新修订版以外的部署。指定
--history-filter ALL
参数来列出目标的所有部署。然后,复制您要修改的部署的 ID。 -
运行以下命令以获取部署的详细信息。这些详细信息包括元数据、组件和作业配置。Replace
deploymentId
使用上一步中的 ID。aws greengrassv2 get-deployment --deployment-id
deploymentId
响应包含部署的详细信息。
-
将上一命令响应中的任何键/值对复制到
deployment.json
. 您可以为新部署更改这些值。-
deploymentName
— 部署的名称。 -
components
— 部署的组件。要卸载组件,请将其从此对象中删除。 -
deploymentPolicies
— 部署的策略。 -
iotJobConfiguration
— 部署的作业配置。 -
tags
— 部署的标签。
-
-
-
(可选)为部署定义名称。Replace
部署名称
使用部署名称执行。{ "targetArn": "
targetArn
", "deploymentName": "deploymentName
" } -
添加每个组件以部署目标设备。为此,请将键值对添加到
components
对象,其中键是组件名称,值是包含该组件详细信息的对象。为添加的每个组件指定以下详细信息:-
version
— 要部署的组件版本。 -
configurationUpdate
— 该配置更新部署。更新是修补程序操作,用于修改组件在每个目标设备上的现有配置,或者如果目标设备上不存在组件的默认配置。您可以指定以下配置更新: -
runWith
—(可选)系统处理选项Amazon IoT Greengrass核心软件用于在核心设备上运行此组件的进程。如果你省略了中的参数runWith
对象,Amazon IoT Greengrass核心软件使用您在Greengrass Nucus.您可以指定以下任意选项:
-
posixUser
— POSIX 系统用户以及用于在 Linux 核心设备上运行此组件的组(可选)。用户和组(如果指定)必须存在于每个 Linux 核心设备上。指定用户和组,使用冒号分隔 (:
) 采用以下格式:user:group
. 该组是可选的。如果您没有指定组,则Amazon IoT Greengrass核心软件为用户使用主组。有关更多信息,请参阅 配置运行组件的用户。 -
windowsUser
— 用于在 Windows 核心设备上运行此组件的 Windows 用户。用户必须存在于每个 Windows 核心设备上,其名称和密码必须存储在 LocalSystem 账户的凭证管理器实例。有关更多信息,请参阅 配置运行组件的用户。此功能适用于 v2.5.0 及更高版本Greengrass Nucus.
-
systemResourceLimits
— 适用于此组件进程的系统资源限制。您可以对通用和非容器化 Lambda 组件应用系统资源限制。有关更多信息,请参阅 配置组件的系统资源限制。您可以指定以下任意选项:
-
cpus
–此组件的进程可以在核心设备上使用的最长 CPU 时间。核心设备的总 CPU 时间相当于设备的 CPU 内核数。例如,在具有 4 个 CPU 核心的核心设备上,您可以将此值设置为2
将此组件的进程限制在每个 CPU 核心的 50% 使用率。在具有 1 个 CPU 核心的设备上,您可以将此值设置为0.25
将此组件的进程限制在 CPU 的使用率为 25%。如果将此值设置为一个大于 CPU 核心数的数,则Amazon IoT Greengrass核心软件不限制组件的 CPU 使用率。 -
memory
–此组件的进程可以在核心设备上使用的最大 RAM 量(以千字节为单位)。
此功能适用于 v2.4.0 及更高版本Greengrass Nucus.Amazon 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": [] }
以下配置更新指定了以下说明:
-
将 HTTPS 设置重置为其默认值 (
true
)。 -
将工业标签列表重置为空清单。
-
合并标识两台锅炉的温度和压力数据流的工业标签列表。
{ "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\"]}" } } } } -
-
(可选)为部署定义部署策略。您可以配置核心设备何时可以安全地应用部署,或者如果核心设备未能应用部署,该怎么办。为此,请添加
deploymentPolicies
反对deployment.json
,然后执行以下任意操作:-
(可选)指定组件更新策略 (
componentUpdatePolicy
)。此策略定义部署是否允许组件推迟更新,直到准备好更新。例如,组件可能需要清理资源或完成关键操作,然后才能重新启动才能应用更新。此策略还定义了组件响应更新通知所需的时间。此策略是具有以下参数的对象:
-
action
—(可选)是否通知组件并等待组件在准备好更新时报告。从以下选项中进行选择:-
NOTIFY_COMPONENTS
— 部署会在每个组件停止之前通知它并更新该组件。组件可以使用SubscribeToComponentUpdatesIPC 操作接收这些通知。 -
SKIP_NOTIFY_COMPONENTS
— 部署不会通知组件,也不会等待它们安全更新。
默认值为
NOTIFY_COMPONENTS
。 -
-
timeoutInSeconds
每个组件必须使用DeferComponentUpdateIPC 运行。如果组件在这段时间内没有响应,则部署将在核心设备上继续进行。默认值为 60 秒。
-
-
(可选)指定配置验证策略 (
configurationValidationPolicy
)。此策略定义了每个组件必须在多长时间内验证部署中的配置更新。组件可以使用SubscribeToValidateConfigurationUpdatesIPC 操作订阅自己的配置更新通知。然后,组件可以使用SendConfigurationValidityReportIPC 操作要告诉Amazon IoT Greengrass如果配置更新有效,则核心软件。如果配置更新无效,则部署将失败。此策略是具有以下参数的对象:
-
timeoutInSeconds
(可选)每个组件验证配置更新所需的时间(以秒为单位)。如果组件在这段时间内没有响应,则部署将在核心设备上继续进行。默认值为 30 秒。
-
-
(可选)指定故障处理策略 (
failureHandlingPolicy
)。此策略是一个字符串,用于定义在部署失败时是否回滚设备。从以下选项中进行选择:-
ROLLBACK
— 如果在核心设备上部署失败,那么Amazon IoT Greengrass核心软件将该核心设备回滚到以前的配置。 -
DO_NOTHING
— 如果在核心设备上部署失败,那么Amazon 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" } } -
-
(可选)定义部署停止、部署或超时的方式。Amazon IoT Greengrass使用Amazon IoT Core将部署发送到核心设备的作业,因此这些选项与Amazon IoT Core个作业。有关更多信息,请参阅 。作业推出和中止配置中的Amazon 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 } } } -
(可选)添加标签 (
tags
) 部署。有关更多信息,请参阅 标记 Amazon IoT Greengrass Version 2 资源。 -
运行以下命令以创建部署:
deployment.json
.aws greengrassv2 create-deployment --cli-input-json file://deployment.json
响应包括
deploymentId
标识了此部署。您可以使用部署 ID 检查部署的状态。有关更多信息,请参阅检查部署状态。