AWS IoT Greengrass グループを AWS IoT Greengrass Core にデプロイする - AWS IoT Greengrass

のドキュメントを表示していますAWS IoT Greengrass Version 1。AWS IoT Greengrass Version 2の最新のメジャーバージョンです。AWS IoT Greengrass。の使用方法の詳細については、「」を参照してください。AWS IoT Greengrass V2の詳細については、AWS IoT Greengrass Version 2開発者ガイド

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

AWS IoT Greengrass グループを AWS IoT Greengrass Core にデプロイする

を使用するAWS IoT Greengrassグループを使用して、エッジ環境でエンティティを整理できます。また、グループを使用して、グループ内のエンティティが相互にどのようにやり取りするかを制御し、 AWS クラウド 。たとえば、グループ内の Lambda 関数だけがローカルで実行されるようにデプロイされ、グループ内のデバイスのみがローカル MQTT サーバーを使用して通信できます。

グループには Core, が含まれている必要があります。これは AWS IoT Greengrass Core ソフトウェアを実行する AWS IoT デバイスです。コアはエッジゲートウェイとして機能し、エッジ環境で AWS IoT Core 機能を提供します。ビジネスニーズに応じて、次のエンティティをグループに追加することもできます。

  • デバイス。AWS IoT レジストリでモノとして表されます。これらのデバイスはFreeRTOSを使用するか、AWS IoTDevice SDKまたは AWS IoT Greengrass検出APICore 接続情報を取得できます。グループのメンバーであるデバイスのみが Core に接続できます。

  • Lambda 関数。コアでコードを実行するユーザー定義のサーバーレスアプリケーション。Lambda 関数はAWS LambdaGreengrass グループから参照されています。詳細については、「Lambda 関数をAWS IoT Greengrasscore」を参照してください。

  • コネクタ。コアでコードを実行する事前定義されたサーバーレスアプリケーション。コネクタは、ローカルインフラストラクチャ、デバイスプロトコル、AWS、およびその他のクラウドサービスを利用できます。詳細については、「Greengrass コネクタを使用したサービスおよびプロトコルとの統合」を参照してください。

  • サブスクリプション。MQTT 通信が承認されている発行者、受信者、および MQTT トピック(またはサブジェクトなど)を定義します。

  • リソース。ローカルへの参照デバイスとボリューム,機械学習モデル, およびシークレット、Greengrass Lambda 関数およびコネクタによるアクセス制御に使用されます。

  • Loggers。のログ記録の設定AWS IoT Greengrassシステムコンポーネントと Lambda 関数を使用します。詳細については、「AWS IoT Greengrass ログでのモニタリング」を参照してください。

Greengrass グループを [ AWS クラウド コアにデプロイします。デプロイは、グループ設定を Core デバイスの group.json ファイルにコピーします。このファイルは greengrass-root/ggc/deployments/group にあります。


                    コアデバイスにデプロイされた Greengrass グループのクラウド定義。
注記

デプロイ中、コアデバイスの Greengrass デーモンプロセスは停止し、再起動します。

からのグループのデプロイAWS IoTconsole

グループをデプロイし、そのデプロイを管理するには、グループの設定ページを使用します。AWS IoTconsole.


                                    Greengrass グループの [Deployments (デプロイ)] ページ。
注記

コンソールでこのページを開くには、[Configure] を選択します。Greengrass、次にクラシック (V1)、次にGroups]、[]、[]Greengrass グループグループを選択します。

グループの現在のバージョンをデプロイするには
  • [Actions (アクション)] で、[Deploy (デプロイ)] を選択します。

グループのデプロイ履歴を表示するには

グループのデプロイ履歴には、各デプロイの試行の日時、グループバージョン、ステータスが含まれます。

  1. ナビゲーションペインで、 [Deployments (デプロイ)] を選択します。

  2. エラーメッセージを含むデプロイの詳細を表示するには、デプロイを含む行を選択します。

グループのデプロイを再デプロイするには

現在のデプロイが失敗した場合、または別のグループバージョンに戻した場合は、デプロイを再デプロイできます。

  1. ナビゲーションペインで、 [Deployments (デプロイ)] を選択します。

  2. デプロイが含まれている行の [ステータス列で、省略記号 (...) を選択してから、[] を選択します。再デプロイする

    デプロイの [再デプロイ] アクションを示す [デプロイ] ページ。
グループのデプロイをリセットするには

グループデプロイをリセットして、グループを移動または削除したり、デプロイ情報を削除したりできます。詳細については、「デプロイのリセット」を参照してください。

  • [Actions (アクション)] から、[Reset Deployments (デプロイのリセット)] を選択します。

AWS IoT Greengrass API を使用したグループのデプロイ

AWS IoT Greengrass API では、AWS IoT Greengrass グループをデプロイし、グループのデプロイを管理するために、次のアクションが用意されています。これらのアクションは AWS CLI、AWS IoT Greengrass API、または AWS SDK から呼び出すことができます。

アクション 説明

CreateDeployment

NewDeployment または Redeployment デプロイを作成します。

現在のデプロイが失敗した場合は、デプロイを再デプロイできます。または、再デプロイして別のグループバージョンに戻すこともできます。

GetDeploymentStatus

デプロイのステータス、BuildingInProgressSuccess、または Failure を返します。

デプロイ通知を受信するように Amazon EventBridge イベントを設定できます。詳細については、「デプロイ通知の取得」を参照してください。

ListDeployments

グループのデプロイ履歴を返します。

ResetDeployments

グループのデプロイをリセットします。

グループデプロイをリセットして、グループを移動または削除したり、デプロイ情報を削除したりできます。詳細については、「デプロイのリセット」を参照してください。

注記

一括デプロイオペレーションの詳細については、「グループの一括デプロイを作成する」を参照してください。

グループ ID の取得

グループ ID は、API アクションで共通して使用されます。 ListGroups アクションを使用して、グループのリストからターゲットグループの ID を検索できます。たとえば、AWS CLIで、list-groups コマンドを使用します。

aws greengrass list-groups

結果をフィルタリングする query オプションを含めることもできます。次に例を示します。

  • 最後に作成されたグループを取得するには、次の操作を行います。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
  • 名前によりグループを取得するには:

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

    グループ名は一意である必要はないため、複数のグループが返されることがあります。

以下に、list-groups 応答の例を示します。各グループの情報には、グループの ID (Id プロパティ) と最新のグループバージョンの ID (LatestVersion プロパティ) が含まれます。グループの他のバージョン ID を取得するには、ListGroupVersions とともにグループ ID を使用します。

注記

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

{ "Groups": [ { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE/versions/4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "Name": "MyFirstGroup", "LastUpdatedTimestamp": "2019-11-11T05:47:31.435Z", "LatestVersion": "4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "CreationTimestamp": "2019-11-11T05:47:31.435Z", "Id": "00dedaaa-ac16-484d-ad77-c3eedEXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE" }, { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE/versions/8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "Name": "GreenhouseSensors", "LastUpdatedTimestamp": "2020-01-07T19:58:36.774Z", "LatestVersion": "8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "CreationTimestamp": "2020-01-07T19:58:36.774Z", "Id": "036ceaf9-9319-4716-ba2a-237f9EXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE" }, ... ] }

指定しない場合 AWS リージョン ,AWS CLIコマンドは、プロファイルのデフォルトのリージョンを使用します。別のリージョンのグループを返すには、リージョンオプションを含めます。次に例を示します。

aws greengrass list-groups --region us-east-1

AWS IoT Greengrass グループオブジェクトモデルの概要

AWS IoT Greengrass API を使用してプログラミングするときは、Greengrass グループオブジェクトモデルを理解しておくと便利です。

Groups

AWS IoT Greengrass API では、最上位の Group オブジェクトはメタデータと GroupVersion オブジェクトのリストで構成されます。GroupVersionオブジェクトは ID によってに Group 関連付けられます。


                                メタデータとグループバージョンのリストで構成されるグループの図。

グループバージョン

GroupVersion オブジェクトは、グループメンバーシップを定義します。各 GroupVersion は、ARN によって CoreDefinitionVersion およびその他のコンポーネントバージョンを参照します。これらの参照は、グループに含めるエンティティを決定します。


                                ARN で他のバージョンタイプを参照するグループバージョンの図。

たとえば、グループに 3 つの Lambda 関数、1 つのデバイス、2 つのサブスクリプションを含めるには、GroupVersionリファレンス:

  • 必要なコアを含む CoreDefinitionVersion

  • 3 つの関数を含む FunctionDefinitionVersion

  • デバイスを含む DeviceDefinitionVersion

  • 2 つのサブスクリプションを含む SubscriptionDefinitionVersion

コアデバイスにデプロイされた GroupVersion によって、ローカル環境で使用できるエンティティと、それらのエンティティがどのようにやり取りできるかが決まります。

グループコンポーネント

グループに追加するコンポーネントには、3 つのレベルの階層があります。

  • A定義のリストを参照するDefinitionVersion指定された型のオブジェクト。たとえば、DeviceDefinitionDeviceDefinitionVersion オブジェクトのリストを参照します。

  • 特定のタイプのエンティティのセットを含む DefinitionVersion。たとえば、DeviceDefinitionVersion には、Device オブジェクトのリストが含まれています。

  • プロパティと動作を定義する個々のエンティティ。たとえば、Device は、AWS IoT レジストリ内の対応するデバイスの ARN、デバイス証明書の ARN、およびローカルシャドウがクラウドと自動的に同期するかどうかを定義します。

    グループには、次のタイプのエンティティを追加できます。

次の例では、DeviceDefinition は、それぞれに複数の Device オブジェクトを含む 3 つの DeviceDefinitionVersion オブジェクトを参照します。グループでは、一度に 1 つの DeviceDefinitionVersion のみが使用されます。


                                DeviceDefinition、DeviceDefinitionVersion、Device オブジェクトで構成されるデバイス階層の図。

グループの更新

AWS IoT Greengrass API では、バージョンを使用してグループの設定を更新します。バージョンは変更不可であるため、グループコンポーネントを追加、削除、または変更するには、新規または更新されたエンティティを含む DefinitionVersion オブジェクトを作成する必要があります。

新しい DefinitionVersions オブジェクトを新規または既存の定義オブジェクトに関連付けることができます。たとえば、 CreateFunctionDefinition アクションを使用して、FunctionDefinitionVersion を初期バージョンとして含む FunctionDefinition を作成したり、 CreateFunctionDefinitionVersion アクションを使用して既存の FunctionDefinition を参照したりできます。

グループコンポーネントを作成したら、GroupVersionすべてを含むDefinitionVersionグループに含めるオブジェクトです。次に、GroupVersion をデプロイします。

GroupVersion をデプロイするには、1 つだけ Core を含む CoreDefinitionVersion を参照する必要があります。参照されるエンティティはすべて、グループのメンバーである必要があります。また、Greengrass サービスロールは、 AWS アカウント () AWS リージョン をデプロイしているGroupVersion

注記

API の Update アクションは、 Group またはコンポーネント定義オブジェクトの名前を変更するために使用されます。

参照するエンティティを更新するAWSのリソース

Greengrass Lambda 関数とシークレットリソースGreengrass 固有のプロパティを定義し、対応するAWSリソースの使用料金を見積もることができます。これらのエンティティを更新するには、対応するAWSリソースではなく、Greengrass オブジェクトを使用します。たとえば、Lambda 関数はAWS LambdaGreengrass グループに固有のライフサイクルやその他のプロパティも定義します。

  • Lambda 関数のコードまたはパッケージ化された依存関係を更新するには、AWS Lambda。次のグループのデプロイ中に、これらの変更は AWS Lambda から取得され、ローカル環境にコピーされます。

  • Greengrass 固有のプロパティを更新するには、更新された Function プロパティを含む FunctionDefinitionVersion を作成します。

注記

Greengrass Lambda 関数は、エイリアス ARN またはバージョン ARN で Lambda 関数を参照できます。エイリアス ARN を参照する場合 (推奨)、AWS Lambda で新しい関数バージョンを作成するときに FunctionDefinitionVersion (または SubscriptionDefinitionVersion) を更新する必要はありません。詳細については、「エイリアスまたはバージョンによる Lambda 関数のリファレンス」を参照してください。

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