创建客户端应用程序组件 - Amazon Lookout for Vision

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

创建客户端应用程序组件

生成 gRPC 存根并准备好客户端应用程序代码后,您就可以创建客户端应用程序组件。您创建的组件是一种自定义组件,需要使用 AWS IoT Greengrass V2 将其部署到 AWS IoT Greengrass Version 2 核心设备。您创建的配方用于描述您的自定义组件。该配方中包含所有也需部署的依赖项。在此例中,您应指定在将您的 Amazon Lookout for Vision 模型打包中创建的模型组件。有关组件配方的更多信息,请参阅 AWS IoT Greengrass Version 2 组件配方参考

本主题的相关过程展示了如何通过配方文件创建客户端应用程序组件,并将其作为 AWS IoT Greengrass V2 自定义组件发布。您可以使用 AWS IoT Greengrass V2 控制台或 AWS SDK 来发布组件。

有关创建自定义组件的详细信息,请参阅 AWS IoT Greengrass V2 文档中的以下内容。

发布客户端应用程序组件所需的 IAM 权限

要创建和发布客户端应用程序组件,您需要以下 IAM 权限:

  • greengrass:CreateComponentVersion

  • greengrass:DescribeComponent

  • s3:PutObject

创建配方

在此过程中,您将为一个简单的客户端应用程序组件创建配方。lookoutvision_edge_agent_example.py 中的代码可以列出部署到设备的模型,在您将组件部署到核心设备后,它会自动运行。要查看输出,请在部署组件后查看组件日志。有关更多信息,请参阅 将您的组件部署到设备。准备就绪后,应使用此过程为用于实现业务逻辑的代码创建配方。

您应将配方创建为 JSON 或 YAML 格式的文件。您还要将客户端应用程序代码上载到 Amazon S3 桶。

创建客户端应用程序组件配方
  1. 创建 gRPC 存根文件(如果尚未如此)。有关更多信息,请参阅 设置 gRPC

  2. 将以下代码保存到名为 lookoutvision_edge_agent_example.py 的文件中

    import grpc from edge_agent_pb2_grpc import EdgeAgentStub import edge_agent_pb2 as pb2 # Creating stub. with grpc.insecure_channel("unix:///tmp/aws.iot.lookoutvision.EdgeAgent.sock") as channel: stub = EdgeAgentStub(channel) # Add additional code that works with Edge Agent in this block to prevent resources leakage models_list_response = stub.ListModels( pb2.ListModelsRequest() ) for model in models_list_response.models: print(f"Model Details {model}")
  3. 创建一个 Amazon S3 桶(或使用现有的桶),以存储您的客户端应用程序组件的源文件。该桶必须位于您的 AWS 账户中,并且它所在的 AWS 区域必须与您使用 AWS IoT Greengrass Version 2 和 Amazon Lookout for Vision 时所在的区域相同。

  4. lookoutvision_edge_agent_example.pyedge_agent_pb2_grpc.py and edge_agent_pb2.py 文件上传到您在上一步中创建的 Amazon S3 桶。记下每个文件的 Amazon S3 路径。您在设置 gRPC 中创建了 edge_agent_pb2_grpc.pyedge_agent_pb2.py

  5. 在编辑器中,创建以下 JSON 或 YAML 配方文件。

    • model_component 更改为您的模型组件的名称。有关更多信息,请参阅 组件设置

    • 将 URI 条目更改为 lookoutvision_edge_agent_example.pyedge_agent_pb2_grpc.pyedge_agent_pb2.py 的 S3 路径。

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.lookoutvision.EdgeAgentPythonExample", "ComponentVersion": "1.0.0", "ComponentType": "aws.greengrass.generic", "ComponentDescription": "Lookout for Vision Edge Agent Sample Application", "ComponentPublisher": "Sample App Publisher", "ComponentDependencies": { "model_component": { "VersionRequirement": ">=1.0.0", "DependencyType": "HARD" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": "pip3 install grpcio grpcio-tools protobuf Pillow", "run": { "script": "python3 {artifacts:path}/lookoutvision_edge_agent_example.py" } }, "Artifacts": [ { "Uri": "S3 path to lookoutvision_edge_agent_example.py" }, { "Uri": "S3 path to edge_agent_pb2_grpc.py" }, { "Uri": "S3 path to edge_agent_pb2.py" } ] } ], "Lifecycle": {} }
    YAML
    --- RecipeFormatVersion: 2020-01-25 ComponentName: com.lookoutvison.EdgeAgentPythonExample ComponentVersion: 1.0.0 ComponentDescription: Lookout for Vision Edge Agent Sample Application ComponentPublisher: Sample App Publisher ComponentDependencies: model_component: VersionRequirement: '>=1.0.0' DependencyType: HARD Manifests: - Platform: os: linux Lifecycle: install: |- pip3 install grpcio pip3 install grpcio-tools pip3 install protobuf pip3 install Pillow run: script: |- python3 {artifacts:path}/lookout_vision_agent_example.py Artifacts: - URI: S3 path to lookoutvision_edge_agent_example.py - URI: S3 path to edge_agent_pb2_grpc.py - URI: S3 path to edge_agent_pb2.py
  6. 将该 JSON 或 YAML 文件保存到您的计算机。

  7. 通过执行以下操作之一创建客户端应用程序组件:

发布客户端应用程序组件(控制台)

您可以使用 AWS IoT Greengrass V2 控制台发布客户端应用程序组件。

发布客户端应用程序组件
  1. 通过执行以下操作:创建配方,为客户端应用程序组件创建配方(如果尚未如此)。

  2. 打开 AWS IoT Greengrass 控制台,网址为 https://console.aws.amazon.com/iot/

  3. 在左侧导航窗格中,于 Greengrass 下选择组件

  4. 我的组件下,选择创建组件

  5. 创建组件页面上,如果要使用 JSON 格式的配方,请选择以 JSON 格式输入配方。如果要使用 YAML 格式的配方,请选择以 YAML 格式输入配方

  6. 配方下,将现有配方替换为您在创建配方中创建的 JSON 或 YAML 配方。

  7. 选择创建组件

  8. 接下来,部署您的客户端应用程序组件。

发布客户端应用程序组件 (SDK)

您可以使用 CreateComponentVersion API 来发布客户端应用程序组件。

发布客户端应用程序组件 (SDK)
  1. 通过执行以下操作:创建配方,为客户端应用程序组件创建配方(如果尚未如此)。

  2. 在命令提示符处,输入以下命令以创建客户端应用程序组件。recipe-file 应替换为您在创建配方中创建的配方文件的名称。

    aws greengrassv2 create-component-version --inline-recipe fileb://recipe-file

    记下响应中组件的 ARN。您在下一个步骤中需要用到它。

  3. 使用以下命令获取客户端应用程序组件的状态。component-arn 应替换为您在上一步中记下的 ARN。如果 componentState 的值为 DEPLOYABLE,表示客户端应用程序组件已准备就绪。

    aws greengrassv2 describe-component --arn component-arn
  4. 接下来,部署您的客户端应用程序组件。