2023 年 6 月 30 日に AWS IoT Greengrass Version 1 は延長ライフサイクルフェーズに入りました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日付以降、AWS IoT Greengrass V1 の機能、拡張機能、バグ修正、またはセキュリティパッチを提供するアップデートはリリースされません。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 デーモンプロセスは停止し、再起動します。
AWS IoT コンソールからのグループのデプロイ
グループをデプロイし、そのデプロイを管理するには、AWS IoT コンソールでグループの設定ページを使用します。
注記
コンソールでこのページを開くには、[Greengrass]を選択してから、[Groups (V1)] (グループ 〔V1〕) を選択し、[Greengrass groups] (Greengrass グループ) からグループを選択します。
- グループの現在のバージョンをデプロイするには
-
-
グループ設定ページで、[Deploy] (デプロイ) を選択します。
-
- グループのデプロイ履歴を表示するには
-
グループのデプロイ履歴には、各デプロイの試行の日時、グループバージョン、ステータスが含まれます。
-
グループ設定ページで、[Deployment] (デプロイ) タブを選択します。
-
エラーメッセージを含めデプロイに関する詳細を表示するには、AWS IoT コンソールの [Greengrass devices] (Greengrass デバイス) から [Deployments] (デプロイ) を選択します。
-
- グループのデプロイを再デプロイするには
-
現在のデプロイが失敗した場合、または別のグループバージョンに戻した場合は、デプロイを再デプロイできます。
-
AWS IoT コンソールから、[Greengrass devices] (Greengrass デバイス) を選択してから、[Group (V1)] (グループ (V1)) を選択します。
-
[Deployment] (デプロイ) タブを選択します。
-
再デプロイするデプロイを選択し、[Redeploy] (再デプロイ) を選択します。
-
- グループのデプロイをリセットするには
-
グループデプロイをリセットして、グループを移動または削除したり、デプロイ情報を削除したりできます。詳細については、「デプロイのリセット」を参照してください。
-
AWS IoT コンソールから、[Greengrass devices] (Greengrass デバイス) を選択してから、[Group (V1)] (グループ (V1)) を選択します。
-
[Deployment] (デプロイ) タブを選択します。
-
リセットするデプロイを選択し、[Reset deployments] (デプロイのリセット) を選択します。
-
AWS IoT Greengrass API を使用したグループのデプロイ
AWS IoT Greengrass API では、AWS IoT Greengrass グループをデプロイし、グループのデプロイを管理するために、次のアクションが用意されています。これらのアクションは AWS CLI、AWS IoT Greengrass API、または AWS SDK から呼び出すことができます。
[アクション] | 説明 |
---|---|
現在のデプロイが失敗した場合は、デプロイを再デプロイできます。または、再デプロイして別のグループバージョンに戻すこともできます。 |
|
デプロイのステータス、 デプロイ通知を受信するように Amazon EventBridge イベントを設定できます。詳細については、「デプロイ通知の取得」を参照してください。 |
|
グループのデプロイ履歴を返します。 |
|
グループのデプロイをリセットします。 グループデプロイをリセットして、グループを移動または削除したり、デプロイ情報を削除したりできます。詳細については、「デプロイのリセット」を参照してください。 |
注記
一括デプロイオペレーションの詳細については、「グループの一括デプロイを作成する」を参照してください。
グループ 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 は、グループの [設定] ページに表示されます。グループバージョン 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
およびその他のコンポーネントバージョンを参照します。これらの参照は、グループに含めるエンティティを決定します。
例えば、グループに 3 つの Lambda 関数、1 つのデバイス、2 つのサブスクリプションを含めるには、GroupVersion
で次を参照します。
必要なコアを含む
CoreDefinitionVersion
。3 つの関数を含む
FunctionDefinitionVersion
。クライアントデバイスを含む
DeviceDefinitionVersion
デバイス。2 つのサブスクリプションを含む
SubscriptionDefinitionVersion
。
コアデバイスにデプロイされた GroupVersion
によって、ローカル環境で使用できるエンティティと、それらのエンティティがどのようにやり取りできるかが決まります。
グループコンポーネント
グループに追加するコンポーネントには、3 つのレベルの階層があります。
定義は特定のタイプの DefinitionVersion オブジェクトのリストを参照します。例えば、
DeviceDefinition
はDeviceDefinitionVersion
オブジェクトのリストを参照します。特定のタイプのエンティティのセットを含む DefinitionVersion。例えば、
DeviceDefinitionVersion
には、Device
オブジェクトのリストが含まれています。プロパティと動作を定義する個々のエンティティ。例えば、
Device
は、AWS IoT レジストリ内の対応するクライアントデバイスの ARN、デバイス証明書の ARN、およびローカルシャドウがクラウドと自動的に同期するかどうかを定義します。グループには、次のタイプのエンティティを追加できます。
次の例では、DeviceDefinition
は、それぞれに複数の Device
オブジェクトを含む 3 つの DeviceDefinitionVersion
オブジェクトを参照します。グループでは、一度に 1 つの DeviceDefinitionVersion
のみが使用されます。
グループの更新
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 関数のリファレンス」を参照してください。
以下も参照してください。
-
「AWS CLI コマンドリファレンス」の AWS IoT Greengrass コマンド