コンポーネントのシャドウとやり取りする - AWS IoT Greengrass

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

コンポーネントのシャドウとやり取りする

ローカルシャドウサービスを使用して、ローカルシャドウドキュメントと、クライアントデバイスシャドウドキュメントの、読み取りと変更を実行する、カスタムコンポーネント (Lambda 関数コンポーネントなど) を開発できます。

カスタムコンポーネントは、AWS IoT Device SDK の AWS IoT Greengrass Core IPC ライブラリを使用して、ローカルシャドウサービスとやり取りを行います。シャドウマネージャーコンポーネントを使用すると、コアデバイスでローカルシャドウサービスを有効にできます。

Greengrass コアデバイスにシャドウマネージャーコンポーネントをデプロイするには、aws.greengrass.ShadowManager コンポーネントを含むデプロイを作成します。

注記

デフォルトでは、シャドウマネージャーコンポーネントをデプロイすると、ローカルシャドウのオペレーションのみが有効になります。AWS IoT Greengrass が、コアデバイスのシャドウまたはクライアントデバイスのシャドウのシャドウ状態情報を、AWS IoT Core の対応するクラウドシャドウドキュメントに同期できるようにするには、synchronize パラメータを含むシャドウマネージャーコンポーネントの設定更新を作成する必要があります。詳細については、「ローカルデバイスシャドウを AWS IoT Core と同期する」を参照してください。

シャドウの状態の取得と変更

シャドウ IPC 操作は、ローカルシャドウドキュメントの状態情報を取得および更新します。シャドウマネージャーコンポーネントは、これらのシャドウドキュメントのコアデバイスへの保存処理を行います。

ローカルシャドウの状態を変更するには
  1. カスタムコンポーネントのレシピに承認ポリシーを追加して、コンポーネントがローカルシャドートピックに関するメッセージを受信できるようにします。

    承認ポリシーの例は、「Local shadow IPC authorization policy examples」(ローカルシャドウ IPC 承認ポリシーの例) を参照してください。

  2. シャドウ IPC オペレーションを使用して、シャドウの状態情報を取得および変更します。コンポーネントコードでシャドウ IPC オペレーションを使用する方法については、「ローカルシャドウとやり取り」を参照してください。

注記

コアデバイスがクライアントデバイスシャドウとやり取りできるようにするには、MQTT ブリッジコンポーネントを設定してデプロイする必要もあります。詳細については、「Enable shadow manager to communicate with client devices」(シャドウマネージャーがクライアントデバイスと通信できるようにする) を参照してください。

シャドウの状態の変化に対応する

Greengrass コンポーネントはコアデバイスで通信を行うために、ローカルパブリッシュ/サブスクライブインターフェイスを使用します。カスタムコンポーネントがシャドウの状態の変更に対応できるようにするには、ローカルのパブリッシュ/サブスクライブトピックにサブスクライブします。これにより、コンポーネントはローカルシャドートピックに関するメッセージを受信し、それらのメッセージを処理できます。

ローカルシャドートピックは、AWS IoT デバイスシャドウ MQTT トピックと同じ形式を使用します。シャドウトピックの詳細については、「AWS IoT デベロッパーガイド」の「デバイスシャドウ MQTT トピック」を参照してください。

ローカルシャドウの状態の変化に対応するには
  1. カスタムコンポーネントのレシピにアクセスコントロールポリシーを追加して、コンポーネントがローカルシャドートピックに関するメッセージを受信できるようにします。

    承認ポリシーの例は、「Local shadow IPC authorization policy examples」(ローカルシャドウ IPC 承認ポリシーの例) を参照してください。

  2. コンポーネントでカスタムアクションを開始するには、メッセージを受信するシャドートピックにサブスクライブする SubscribeToTopic IPC オペレーションを使用します。コンポーネントコードでローカルパブリッシュ/サブスクライブ IPC オペレーションを使用する方法については、「ローカルメッセージをパブリッシュ/サブスクライブする」を参照してください。

  3. Lambda 関数を呼び出すには、イベントソース設定を使用してシャドートピックの名前を指定し、それがローカルパブリッシュ/サブスクライブトピックであることを指定します。Lambda 関数コンポーネントの作成方法については、「AWS Lambda 関数を実行する」を参照してください。

注記

コアデバイスがクライアントデバイスシャドウとやり取りできるようにするには、MQTT ブリッジコンポーネントを設定してデプロイする必要もあります。詳細については、「Enable shadow manager to communicate with client devices」(シャドウマネージャーがクライアントデバイスと通信できるようにする) を参照してください。