クライアントアプリケーションコンポーネントの作成 - Amazon Lookout for Vision

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クライアントアプリケーションコンポーネントの作成

gRPC スタブを生成し、クライアントアプリケーションコードの準備ができたら、クライアントアプリケーションコンポーネントを作成できます。作成するコンポーネントは、AWS IoT Greengrass Version 2 コアデバイスに AWS IoT Greengrass V2 によりデプロイするカスタムコンポーネントです。作成するレシピには、カスタムコンポーネントが記述されます。レシピには、デプロイする必要もある依存関係すべてが含まれています。この場合、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 IoT Greengrass Version 2 と Amazon Lookout for Vision を使う同じ AWS リージョンに存在する必要があります。

  4. 前のステップで作成した Amazon S3 バケットに lookoutvision_edge_agent_example.pyedge_agent_pb2_grpc.py and edge_agent_pb2.py をアップロードします。各ファイルの Amazon S3 パスをメモします。edge_agent_pb2_grpc.pyedge_agent_pb2.pygRPC のセットアップ で作成しました。

  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/es/) を開きます。

  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. 次に、クライアントアプリケーションコンポーネントをデプロイします。