AWS IoT Greengrass ストリームマネージャーの設定 - AWS IoT Greengrass

AWS IoT Greengrass ストリームマネージャーの設定

AWS IoT Greengrass コア では、ストリームマネージャーは IoT デバイスから送信されたデータを保存、処理、エクスポートできます。ストリームマネージャーは、グループレベルのランタイム設定を設定するために使用するパラメータを提供します。これらの設定は、Greengrass コアのすべてのストリームに適用されます。AWS IoT コンソール または AWS IoT Greengrass API を使用して、ストリームマネージャー設定を設定できます。変更は、グループがデプロイされた後に有効になります。

ストリームマネージャーのパラメータ

ストリームマネージャーは、グループレベルの設定を定義するための次のパラメータを提供します。すべてのパラメータは省略可能です。

ストレージディレクトリ

パラメータ名: STREAM_MANAGER_STORE_ROOT_DIR

ストリームを保存するために使用されるローカルディレクトリの絶対パス。この値は、スラッシュ (/data など) で開始する必要があります。

ストリームデータのセキュリティ保護については、「ローカルデータセキュリティ」を参照してください。

Server port

パラメータ名: STREAM_MANAGER_SERVER_PORT

ストリームマネージャーとの通信に使用されるローカルポート番号。デフォルト: 8088

クライアントを認証する

パラメータ名: STREAM_MANAGER_AUTHENTICATE_CLIENT

ストリームマネージャーと対話するためにクライアントを認証する必要があるかどうかを示します。クライアントとストリームマネージャー間のすべての相互作用は、AWS IoT Greengrass Core SDK によって制御されます。このパラメータは、ストリームを操作するために AWS IoT Greengrass Core SDK を呼び出すことができるクライアントを決定します。詳細については、「クライアント認証」を参照してください。

有効な値は true または false です。デフォルトは true (推奨) です。

  • true。Greengrass Lambda 関数のみをクライアントとして許可します。Lambda 関数クライアントは、内部 AWS IoT Greengrass コア プロトコルを使用して AWS IoT Greengrass Core SDK で認証します。

  • false。AWS IoT Greengrass コア で実行されるすべてのプロセスをクライアントとして許可します。ビジネスケースで要求されない限り、false に設定しないでください。たとえば、コアデバイス上の非 Lambda プロセスが、コア上で実行されている Docker コンテナなど、ストリームマネージャーと直接通信する必要がある場合にのみ、この値を false に設定します。

最大帯域幅

パラメータ名: STREAM_MANAGER_EXPORTER_MAX_BANDWIDTH

データのエクスポートに使用できる平均最大帯域幅 (キロビット/秒)。デフォルトでは、使用可能な帯域幅を無制限に使用することができます。

スレッドプールサイズ

パラメータ名: STREAM_MANAGER_EXPORTER_THREAD_POOL_SIZE

データのエクスポートに使用できるアクティブなスレッドの最大数。デフォルト: 5

最適なサイズは、ハードウェア、ストリームボリューム、予定されているエクスポートストリームの数によって異なります。エクスポート速度が遅い場合は、この設定を調整して、ハードウェアとビジネスケースに最適なサイズを見つけることができます。コアデバイスハードウェアの CPU とメモリは、制限要因です。開始するには、この値をデバイスのプロセッサコアの数と同じ値に設定してみてください。

ハードウェアがサポートできるサイズよりも大きいサイズを設定しないように注意してください。各ストリームはハードウェアリソースを消費するため、制約のあるデバイス上のエクスポートストリームの数を制限する必要があります。

JVM の引数

パラメータ名: JVM_ARGS

起動時にストリームマネージャーに渡すカスタム Java 仮想マシン引数。複数の引数はスペースで区切る必要があります。

このパラメータは、JVM で使用されるデフォルト設定を上書きする必要がある場合にのみ使用します。たとえば、大量のストリームをエクスポートする場合は、デフォルトのヒープサイズを大きくする必要があります。

ストリームマネージャーの設定 (コンソール)

AWS IoT コンソール は以下のロール管理タスクに使用できます。

変更は、Greengrass グループがデプロイされた後に有効になります。

注記

コンソールを使用してストリームマネージャーを有効にし、グループをデプロイすると、ストリームマネージャーのメモリ制限は 4 GB に設定されます。

 

ストリームマネージャーが有効になっているかどうかを確認するには (コンソール)

  1. AWS IoT コンソールで、[Greengrass]、[グループ] の順に選択します。

  2. ターゲットグループを選択します。

  3. [設定] を選択します。

  4. [Stream manager (ストリームマネージャー)] で、有効または無効のステータスを確認します。設定されているカスタムストリームマネージャー設定も表示されます。

    
                            AWS IoT コンソール の [設定] ページの [ストリームマネージャー] セクション。

 

グループの作成中にストリームマネージャーを有効または無効にするには (コンソール)

  1. AWS IoT コンソールで、[Greengrass]、[グループ] の順に選択します。

  2. [Create Group (グループの作成)] を選択します。次のページで選択すると、グループのストリームマネージャーの設定方法が決まります。

  3. デフォルトのグループ設定でグループを作成します。これにより、デフォルトのストリームマネージャー設定でストリームマネージャーも有効になります。

    1. [Use default creation (デフォルトの作成を使用)] を選択します。

    2. ステップ 5 に進みます。

  4. カスタムグループ設定を使用してグループを作成するには:

    1. [Customize (カスタマイズ)] を選択します。

    2. [Name your Group (グループに名前を付ける)] ページと [Attach an IAM Role to your Group (IAM ロールをグループにアタッチする)] ページに進みます。

    3. [Stream manager (ストリームマネージャー)] ページで、グループのストリームマネージャーを設定します。

      • デフォルト設定でストリームマネージャーを有効にするには、[Use defaults (デフォルトを使用)] を選択します。

         

      • カスタム設定でストリームマネージャーを有効にするには、[Customize settings (設定をカスタマイズ)] を選択します。

        1. [Configure stream manager (ストリームマネージャーの設定)] ページで、[Enable (有効にする)] を選択します。

        2. [Custom settings (カスタム設定)] で、ストリームマネージャーパラメータの値を入力します。詳細については、「ストリームマネージャーのパラメータ」を参照してください。AWS IoT Greengrass でデフォルト値を使用できるようにするには、フィールドを空のままにします。

           

      • ストリームマネージャーを無効にするには、[Customize settings (設定をカスタマイズ)] を選択します。

        1. [Configure stream manager (ストリームマネージャーの設定)] ページで、[Disable (無効にする)] を選択します。

           

      
                            グループ作成ワークフローの [Stream manager (ストリームマネージャー)] ページ。
  5. [Next] を選択します。

  6. 残りのページに進み、グループを作成します。

  7. [Connect your Core device (コアデバイスの接続)] ページで、セキュリティリソースをダウンロードし、情報を確認して、[Finish (完了)] を選択します。

    注記

    ストリームマネージャーが有効になっている場合、グループをデプロイする前に、コアデバイスに Java 8 ランタイムをインストールする必要があります。

 

既存のグループのストリームマネージャーを有効または無効にするには (コンソール)

  1. AWS IoT コンソールで、[Greengrass]、[グループ] の順に選択します。

  2. ターゲットグループを選択します。

  3. [設定] を選択します。

  4. [Stream manager (ストリームマネージャー)] の下に、カスタムストリームマネージャーの設定と共に、有効または無効のステータスが表示されます。[Edit] を選択します。

  5. [Enable (有効にする)] または [Disable (無効にする)] を選択します。

  6. [Save] を選択します。

 

ストリームマネージャーの設定を変更するには (コンソール)

  1. AWS IoT コンソールで、[Greengrass]、[グループ] の順に選択します。

  2. ターゲットグループを選択します。

  3. [設定] を選択します。

  4. [Stream manager (ストリームマネージャー)] の下に、カスタムストリームマネージャーの設定と共に、有効または無効のステータスが表示されます。[Edit] を選択します。

  5. ストリームマネージャーパラメータの値を編集します。AWS IoT Greengrass が、対応するパラメータにデフォルト値を使用できるようにするには、フィールドを空のままにします。

  6. [保存] を選択します。

ストリームマネージャーの設定 (CLI)

AWS CLI では、システム GGStreamManager Lambda 関数を使用してストリームマネージャーを設定します。システム Lambda 関数は、AWS IoT Greengrass Core ソフトウェアのコンポーネントです。場合によっては、AWS IoT Greengrass グループ オブジェクトモデル内の対応する Function および FunctionDefinitionVersion オブジェクトを管理することによって Greengrass 機能を設定できます。詳細については、「AWS IoT Greengrass グループオブジェクトモデルの概要」を参照してください。

CLI は以下の管理タスクに使用できます。

変更は、グループがデプロイされた後に有効になります。

ヒント

ストリームマネージャーが有効で実行されているかどうかを確認するには、コアデバイスのターミナルで次のコマンドを実行します。

ps aux | grep -i 'streammanager'

 

ストリームマネージャーが有効になっているかどうかを確認するには (CLI)

デプロイされた関数定義バージョンにシステム GGStreamManager Lambda 関数が含まれている場合、ストリームマネージャーが有効になります。確認するには、次の手順を実行します。

  1. ターゲットの Greengrass グループとグループのバージョンの ID を取得します。この手順では、これが最新のグループおよびグループのバージョンであると仮定します。次のコマンドは、最後に作成されたグループを返します。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    または、名前でクエリを実行することもできます。グループ名は一意である必要はないため、複数のグループが返されることがあります。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注記

    これらの値は AWS IoT コンソール にもあります。グループ ID は、グループの [Settings (設定)] ページに表示されます。グループバージョン ID は、グループの [Deployments (デプロイ)] ページに表示されます。

  2. 出力のターゲットグループから Id 値と LatestVersion 値をコピーします。

  3. 最新のグループバージョンを取得します。

    • コピーした Idgroup-id を置換えます。

    • コピーした LatestVersionlatest-group-version-id を置換えます。

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 出力の FunctionDefinitionVersionArn で、関数定義の ID と関数定義のバージョンを取得します。

    • 関数定義 ID は、ARN の functions セグメントに続く GUID です。

    • 関数定義のバージョン ID は、ARN の versions セグメントに続く GUID です。

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/function-definition-id/versions/function-definition-version-id
  5. 関数定義バージョンの ID。

    • function-definition-id を関数定義 ID に置き換えます。

    • function-definition-version-id ID を関数定義バージョン ID に置き換えます。

    aws greengrass get-function-definition-version \ --function-definition-id function-definition-id \ --function-definition-version-id function-definition-version-id

出力内の functions 配列に GGStreamManager 関数が含まれている場合、ストリームマネージャーが有効になります。関数に定義された環境変数は、ストリームマネージャーのカスタム設定を表します。

 

ストリームマネージャー設定 (CLI) を有効化、無効化、設定するには

AWS CLI では、システム GGStreamManager Lambda 関数を使用してストリームマネージャーを設定します。変更は、グループをデプロイした後に有効になります。

  • ストリームマネージャーを有効にするには、関数定義バージョンの functions 配列に GGStreamManager を含めます。カスタム設定を設定するには、対応するストリームマネージャーのパラメータの環境変数を定義します。

  • ストリームマネージャーを無効にするには、関数定義バージョンの functions 配列から GGStreamManager を削除します。

デフォルト設定のストリームマネージャー

次の設定例では、デフォルト設定でストリームマネージャーを有効にします。任意の関数 ID を StreamManager に設定します。

{ "FunctionArn": "arn:aws:lambda:::function:GGStreamManager:1", "FunctionConfiguration": { "MemorySize": 128000, "Pinned": true, "Timeout": 3 }, "Id": "StreamManager" }

AWS IoT Greengrass は、省略されたストリームマネージャーパラメータにデフォルト値を使用します。デフォルト設定でストリームマネージャーを有効にするエンドツーエンドのチュートリアルについては、「AWS クラウドへのデータストリームのエクスポート (CLI)」を参照してください。

カスタム設定のストリームマネージャー

以下の設定例では、ストレージディレクトリ、サーバーポート、スレッドプールサイズのカスタム設定を使用して、ストリームマネージャーを有効にします。

{ "FunctionArn": "arn:aws:lambda:::function:GGStreamManager:1", "FunctionConfiguration": { "Environment": { "Variables": { "STREAM_MANAGER_STORE_ROOT_DIR": "/data", "STREAM_MANAGER_SERVER_PORT": "1234", "STREAM_MANAGER_EXPORTER_THREAD_POOL_SIZE": "4" } }, "MemorySize": 128000, "Pinned": true, "Timeout": 3 }, "Id": "StreamManager" }

FunctionConfiguration パラメータについては、MemorySize は少なくとも 128000 である必要があります。Pinnedtrue に設定する必要があります。

注記

Timeout は関数定義バージョンで必要ですが、GGStreamManager は使用しません。

 

  1. ターゲットの Greengrass グループとグループのバージョンの ID を取得します。この手順では、これが最新のグループおよびグループのバージョンであると仮定します。次のコマンドは、最後に作成されたグループを返します。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    または、名前でクエリを実行することもできます。グループ名は一意である必要はないため、複数のグループが返されることがあります。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注記

    これらの値は AWS IoT コンソール にもあります。グループ ID は、グループの [Settings (設定)] ページに表示されます。グループバージョン ID は、グループの [Deployments (デプロイ)] ページに表示されます。

  2. 出力のターゲットグループから Id 値と LatestVersion 値をコピーします。

  3. 最新のグループバージョンを取得します。

    • コピーした Idgroup-id を置換えます。

    • コピーした LatestVersionlatest-group-version-id を置換えます。

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 出力の FunctionDefinitionVersionArn で、関数定義の ID をコピーします。ID は、次の例に示すように、ARN の functions セグメントに続く GUID です。

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    注記

    または、create-function-definition コマンドを実行して関数定義を作成し、出力から ID をコピーすることもできます。

  5. 関数定義に関数定義バージョンを追加します。

    • 関数定義用にコピーした Idfunction-definition-id を置き換えます。

    • functions 配列には、コアで使用できるようにする他のすべての関数を含めます。get-function-definition-version コマンドを使用して、既存の関数のリストを取得できます。

     

    デフォルト設定でストリームマネージャーを有効にする

    次の例では、functions 配列に GGStreamManager 関数を含めることで、ストリームマネージャーを有効にします。この例では、ストリームマネージャーのパラメータにデフォルト値を使用します。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[ { "FunctionArn": "arn:aws:lambda:::function:GGStreamManager:1", "FunctionConfiguration": { "MemorySize": 128000, "Pinned": true, "Timeout": 3 }, "Id": "StreamManager" }, { "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:MyLambdaFunction:MyAlias", "FunctionConfiguration": { "Executable": "myLambdaFunction.function_handler", "MemorySize": 16000, "Pinned": true, "Timeout": 5 }, "Id": "MyLambdaFunction" }, ... more user-defined functions ] }'
    注記

    例の MyLambdaFunction 関数は、ユーザー定義 Lambda 関数の 1 つを表します。

    カスタム設定でストリームマネージャーを有効にする

    次の例では、functions 配列に GGStreamManager 関数を含めることで、ストリームマネージャーを有効にします。デフォルト値を変更しない限り、すべてのストリームマネージャー設定はオプションです。この例では、環境変数を使用してカスタム値を設定します。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[ { "FunctionArn": "arn:aws:lambda:::function:GGStreamManager:1", "FunctionConfiguration": { "Environment": { "Variables": { "STREAM_MANAGER_STORE_ROOT_DIR": "/data", "STREAM_MANAGER_SERVER_PORT": "1234", "STREAM_MANAGER_EXPORTER_THREAD_POOL_SIZE": "4" } }, "MemorySize": 128000, "Pinned": true, "Timeout": 3 }, "Id": "StreamManager" }, { "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:MyLambdaFunction:MyAlias", "FunctionConfiguration": { "Executable": "myLambdaFunction.function_handler", "MemorySize": 16000, "Pinned": true, "Timeout": 5 }, "Id": "MyLambdaFunction" }, ... more user-defined functions ] }'

    MemorySize は少なくとも 128000 でなければなりません。Pinnedtrue に設定する必要があります。

    注記

    Timeout は関数定義バージョンで必要ですが、GGStreamManager は使用しません。

    ストリームマネージャーを無効にする

    次の例では、ストリームマネージャーを無効にする GGStreamManager 関数を省略しています。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[ { "Id": "MyLambdaFunction", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:MyLambdaFunction:MyAlias", "FunctionConfiguration": { "Executable": "myLambdaFunction.function_handler", "MemorySize": 16000, "Pinned": true, "Timeout": 5 } }, ... more user-defined functions ] }'
    注記

    Lambda 関数をデプロイしない場合は、関数定義バージョンを完全に省略できます。

  6. 出力から 関数定義バージョンの Arn をコピーします。

  7. システムの Lambda 関数が含まれているグループバージョンを作成します。

    • group-id をこのグループの Id で置き換えます。

    • 最新のグループバージョンからコピーした CoreDefinitionVersionArncore-definition-version-arn を置換えます。

    • 新しい関数定義バージョンにコピーした Arnfunction-definition-version-arn を置換えます。

    • 最新のグループバージョンからコピーした他のグループコンポーネントの ARN (SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn など) を置き換えます。

    • 使用されていないパラメータをすべて削除します。たとえば、グループバージョンにリソースがない場合には、--resource-definition-version-arn を削除します。

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  8. 出力から Version をコピーします。これは新しいグループバージョンの ID です。

  9. 新しいグループバージョンでグループをデプロイします。

    • グループにコピーした Idgroup-id を置換えます。

    • 新しいグループバージョンにコピーした Versiongroup-version-id を置換えます。

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

これらの設定を更新するには、更新された設定の GGStreamManager 関数を含む関数定義バージョンを作成します。FunctionDefinitionVersionfunctions 配列には、コアにデプロイするすべての Lambda 関数が含まれている必要があります。get-function-definition-version コマンドを使用して、既存の関数定義バージョンから Greengrass Lambda 関数を取得できます。変更は、グループがデプロイされた後に有効になります。

以下の資料も参照してください。