本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
发布要部署到核心设备的组件
构建或完成组件版本后,可以将其发布到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)
-
在命令提示符或终端中打开组件文件夹。
-
如果您尚未设置,请构建 Greengrass 组件。这些区域有:构建组件命令在
greengrass-build
组件文件夹中的文件夹。运行以下 命令。gdk component build
-
将组件发布到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)。发布组件时,可执行以下操作:
-
将组件构件发布到 S3 存储桶。
-
将每个工件的 Amazon S3 URI 添加到组件配方中。
-
在中创建组件版本Amazon IoT Greengrass来自组件配方。
您上传的每个组件版本必须是唯一的。请确保上传了正确的组件版本,因为上传后无法对其进行编辑。
您可以按照以下步骤从开发计算机或 Greengrass 核心设备发布组件。
发布组件(shell 命令)
-
如果组件使用的版本存在于Amazon IoT Greengrass服务,那么你必须更改组件的版本。在文本编辑器中打开配方,增加版本并保存文件。选择反映您对组件所做更改的新版本。
注意 Amazon IoT Greengrass对组件使用语义版本。语义版本遵循重大的.未成年人.补丁号码系统。例如,版本
1.0.0
代表组件的第一个主要版本。有关更多信息,请参阅 。语义版本规范. -
如果您的组件有构件,请执行以下操作:
-
将组件的构件发布到您的 S3 存储桶Amazon Web Services 账户.
提示 我们建议您在 S3 存储桶中构件的路径中包括组件名称和版本。此命名方案可以帮助您维护组件之前版本使用的工件,因此您可以继续支持以前的组件版本。
运行以下命令,将构件文件发布到 S3 存储桶。Replace
DOC-例子桶
将替换为存储桶的名称,然后将其替换为神器 /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 存储桶以获取组件项目。
-
添加名为的列表
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 账户. Replace
路径/到/食谱文件
使用配方文件的路径。aws greengrassv2 create-component-version --inline-recipe fileb://
path/to/recipeFile
将复制到
arn
从响应中查看下一步中组件的状态。注意 Amazon IoT Greengrass在创建组件时,计算每个构件的摘要。这意味着在创建组件后,您无法修改 S3 存储桶中的工件文件。如果这样做,包含此组件的部署将失败,因为文件摘要不匹配。如果修改构件文件,必须创建组件的新版本。
-
中的每个组件Amazon IoT Greengrass服务有状态。运行以下命令以确认在此过程中发布的组件版本的状态。Replace
com.例.Hello World
和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组件到设备。