建立用戶端應用程式元件 - Amazon Lookout for Vision

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立用戶端應用程式元件

您可以在產生 GrPC 虛設常式並準備好用戶端應用程式程式碼之後,建立用戶端應用程式元件。您建立的元件是您使用部署至AWS IoT Greengrass Version 2核心裝置的自訂元件AWS IoT Greengrass V2。您建立的配方會描述您的自訂元件。配方包括任何也需要部署的相依性。在這種情況下,您可以指定在中建立的模型元件包裝您的亞馬遜 Lookout for Vision 模型。如需有關元件配方的詳細資訊,請參閱AWS IoT Greengrass Version 2元件配方參考

本主題的程序說明如何從 recipe 檔案建立用戶端應用程式元件,並將其發佈為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 路徑。您已建立edge_agent_pb2_grpc.pyedge_agent_pb2.py在中設定 gRPC

  5. 在編輯器中創建以下 JSON 或 YAML 配方文件。

    • model_component到您的模型元件的名稱。如需詳細資訊,請參閱元件設定

    • 將 URI 項目變更為lookoutvision_edge_agent_example.pyedge_agent_pb2_grpc.py和的 S3 路徑edge_agent_pb2.py

    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. 如果您還沒有,請執行以下操作為您的客戶端 appication 組件創建配方。創建配方

  2. 請在以下位置開啟AWS IoT Greengrass主控台 https://console.aws.amazon.com/iot/

  3. 在左側導覽窗格的 [Greengrass] 下,選擇 [元件]。

  4. 我的組件下選擇創建組件

  5. 如果您要使用 JSON 格式配方,請在 [建立元件] 頁面上選擇 [將方案輸入為 JSON]。如果您要使用 YAML 格式配方,請選擇「輸入方法為 YAML」。

  6. 創建配方配方」底下,以您在中建立的 JSON 或 YAML 方案取代現有的方案。

  7. 選擇 [建立元件]。

  8. 接下來,部署用戶端應用程式元件。

發佈用戶端應用程式元件 (SDK)

您可以使用 CreateComponentVersionAPI 發佈用戶端應用程式元件。

若要發佈用戶端應用程式元件 (SDK)
  1. 如果您還沒有,請執行以下操作為您的客戶端 appication 組件創建配方。創建配方

  2. 在命令提示字元中,輸入下列命令以建立用戶端應用程式元件。以您在中建立的 recipe 檔案的名稱取recipe-file創建配方

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

    請注意回應中的元件的 ARN。下一個步驟需要此值。

  3. 使用下面的命令來獲取客戶端應用程序組件的狀態。以您在上一個步驟中記下的 ARN 取component-arn代。如果的componentState值為,則用戶端應用程式元件已就緒DEPLOYABLE

    aws greengrassv2 describe-component --arn component-arn
  4. 接下來,部署用戶端應用程式元件。