本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
发布要部署到核心设备的组件
在构建或完成组件的某个版本后,可以将其发布到Amazon IoT Greengrass服务。然后,可以将其部署到 Greengrass 核心设备。
如果您使用 G reengrass 开发套件 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,然后根据配方创建组件。您可以在 GDK CLI 配置文件中指定要使用的 S3 存储桶和区域。
如果您使用 GDK CLI v1.1.0 或更高版本,则可以指定--bucket
参数来指定 GDK CLI 在其中上传组件构件的 S3 存储桶。如果您未指定此参数,GDK CLI 会上传到名称为 S3 存储桶,其中存储桶
和区域
是
您在中bucket
-region
-accountId
gdk-config.json
指定的值,Accacc ountId
是您的Amazon Web Services 账户 ID。 GDK CLI 会在存储桶不存在时创建存储桶。
默认情况下,核心设备角色不允许访问 S3 存储桶。如果这是您第一次使用此 S3 存储桶,则必须为角色添加权限,以允许核心设备从此 S3 存储桶检索组件工件。有关更多信息,请参阅允许访问 S3 存储桶以获取组件项目:
发布 Greengrass 组件 (GDK CLI)
-
在命令提示符或终端中打开组件文件夹。
-
如果您尚未执行,请构建 Greengrass 组件。组件生成命令会在组件文件夹的
greengrass-build
文件夹中生成配方和工件。运行以下命令。gdk component build
-
将组件发布到Amazon Web Services 云。组件发布命令将组件的工件上传到 Amazon S3,并使用每个工件的 URI 更新组件的配方。然后,它在Amazon IoT Greengrass服务中创建组件。
注意 Amazon IoT Greengrass在创建组件时计算每个工件的摘要。这意味着在创建组件后,您无法修改 S3 存储桶中的工件文件。否则,包含此组件的部署将失败,因为文件摘要不匹配。如果您修改构件文件,则必须创建新版本组件的组件。
如果您在 GDK CLI 配置文件中指定
NEXT_PATCH
组件版本,则 GDK CLI 将使用Amazon IoT Greengrass服务中尚不存在的下一个补丁版本。运行以下命令。
gdk component publish
输出告诉你 GDK CLI 创建的组件的版本。
发布组件后,可以将组件部署到核心设备。有关更多信息,请参阅将Amazon IoT Greengrass组件部署到设备:
发布组件(shell 命令)
使用以下步骤使用 shell 命令和Amazon Command Line Interface (Amazon CLI) 发布组件。发布组件时,您可以执行以下操作:
-
将组件构件发布到 S3 存储桶。
-
将每个工件的 Amazon S3 URI 添加到组件配方中。
-
Amazon IoT Greengrass从组件配方中创建组件版本。
您上传的每个组件版本都必须是唯一的。请确保上传了正确的组件版本,因为上传后无法对其进行编辑。
您可以按照以下步骤从开发计算机或 Greengrass 核心设备发布组件。
发布组件(shell 命令)
-
如果组件使用Amazon IoT Greengrass服务中存在的版本,则必须更改该组件的版本。在文本编辑器中打开配方,增加版本并保存文件。选择反映您对组件所作更改的新版本。
注意 Amazon IoT Greengrass对组件使用语义版本。语义版本遵循主要版本. 未成年人。 补丁号系统。例如,版本
1.0.0
代表组件的第一个主要版本。有关更多信息,请参阅语义版本规范。 -
如果组件有构件,请执行以下操作:
-
将组件构件发布到您的 S3 存储桶Amazon Web Services 账户。
提示 我们建议您将组件名称和版本包括在 S3 存储桶中构件的路径里。此命名方案可以帮助您维护先前版本的组件所使用的构件,因此您可以继续支持以前的组件版本。
运行以下命令,将构件文件发布到 S3 存储桶。将
DOC-EXAMPLE-B
UC-BUC-BUC-BUC-BUC-BUC-BUC-BUC-BUC 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 存储桶以获取组件项目:
-
如果不存在名
Artifacts
为的列表,则将其添加到组件配方中。该Artifacts
列表出现在每个清单中,清单定义了组件在其支持的每个平台上的要求(或该组件对所有平台的默认要求)。 -
将每个构件添加到构件列表中,或更新现有构件的 URI。Amazon S3 URI 由存储桶名称和存储桶中工件对象的路径组成。您的构件的 Amazon S3 URI 应类似如下示例。
s3://
DOC-EXAMPLE-BUCKET
/artifacts/com.example.HelloWorld/1.0.0/artifact.py
完成这些步骤后,您的食谱应该有一个如下所示的
Artifacts
清单。有关配方的更多信息,请参阅Amazon IoT Greengrass组件配方参考。
-
-
使用Amazon IoT Greengrass控制台从配方文件创建组件。
运行以下命令,以配方文件创建组件。此命令创建组件并将其作为私有Amazon IoT Greengrass组件发布在您的中Amazon Web Services 账户。将
path/to/recipeFile
替换为配方文件的路径。aws greengrassv2 create-component-version --inline-recipe fileb://
path/to/recipeFile
在下一步中,复制响应中的以检查组件的状态。
arn
注意 Amazon IoT Greengrass在创建组件时计算每个工件的摘要。这意味着在创建组件后,您无法修改 S3 存储桶中的工件文件。否则,包含此组件的部署将失败,因为文件摘要不匹配。如果您修改构件文件,则必须创建新版本组件的组件。
-
Amazon IoT Greengrass服务中的每个组件都有一个状态。运行以下命令以确认您在此过程中发布的组件版本的状态。替换
com.example。 HelloWorld
以及1.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组件部署到设备。