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