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

AWS IoT Greengrass Version 1 は機能更新を受信しなくなり、2023 年 6 月 30 日までセキュリティパッチとバグ修正のみ受信します。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。重要な新機能新たなプラットフォームのサポートが追加された 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 レジストリでモノとして表されます。Greengrass デバイスは FreeRTOS を実行するか、AWS IoT Device SDK または AWS IoT Greengrass Discovery API を使用して、コアの接続情報を取得します。グループのメンバーであるクライアントデバイスのみが Core に接続できます。

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

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

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

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

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

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


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

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

AWS IoT コンソールからのグループのデプロイ

グループをデプロイし、そのデプロイを管理するには、AWS IoT コンソールでグループの設定ページを使用します。

注記

コンソールでこのページを開くには、[Greengrass]を選択してから、[Groups (V1)] (グループ 〔V1〕) を選択し、[Greengrass groups] (Greengrass グループ) からグループを選択します。

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

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

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

  1. グループ設定ページで、[Deployment] (デプロイ) タブを選択します。

  2. エラーメッセージを含めデプロイに関する詳細を表示するには、AWS IoT コンソールの [Greengrass devices] (Greengrass デバイス) から [Deployments] (デプロイ) を選択します。

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

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

  1. AWS IoT コンソールから、[Greengrass devices] (Greengrass デバイス) を選択してから、[Group (V1)] (グループ (V1)) を選択します。

  2. [Deployment] (デプロイ) タブを選択します。

  3. 再デプロイするデプロイを選択し、[Redeploy] (再デプロイ) を選択します。

グループのデプロイをリセットするには

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

  1. AWS IoT コンソールから、[Greengrass devices] (Greengrass デバイス) を選択してから、[Group (V1)] (グループ (V1)) を選択します。

  2. [Deployment] (デプロイ) タブを選択します。

  3. リセットするデプロイを選択し、[Reset deployments] (デプロイのリセット) を選択します。

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

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

[Action] (アクション) 説明

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 IoT コンソールにもあります。グループ 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 グループオブジェクトモデルを理解しておくと便利です。

グループ

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 つのレベルの階層があります。

  • 定義は特定のタイプの 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 を参照したりできます。

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

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

注記

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

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

Greengrass Lambda 関数とシークレットリソースは、Greengrass 固有のプロパティを定義し、対応する AWS リソースも参照します。これらのエンティティを更新するには、Greengrass オブジェクトではなく、対応する AWS リソースに変更を加えます。例えば、Lambda 関数は AWS Lambda 内の関数を参照し、Greengrass グループに固有のライフサイクルやその他のプロパティも定義します。

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

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

注記

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

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