AWS IoT Greengrass バージョン 1 のドキュメントを参照することができます。AWS IoT Greengrass バージョン 2 は、AWS IoT Greengrass の最新のメジャーバージョンです。AWS IoT Greengrass バージョン 2 の使用の詳細については、「AWS Greengrass V2 開発者ガイドIoT」を参照してください。
「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
AWS IoT Greengrass Core の設定
AWS IoT Greengrass コア は、エッジ環境でハブまたはゲートウェイとして機能する AWS IoT のモノ (デバイス) です。他の AWS IoT デバイスと同様に、コアはレジストリ内にあり、デバイスシャドウを保持し、デバイス証明書を使用して AWS IoT Core および AWS IoT Greengrass を認証します。コアデバイスは AWS IoT Greengrass Core ソフトウェアを実行します。これによって、通信、車道同期やトークン交換などの Greengrass グループのローカルプロセスを管理することができます。
AWS IoT Greengrass Core ソフトウェアには、以下の機能が用意されています。
-
コネクタと Lambda 関数のデプロイとローカル実行。
-
AWS クラウドへの自動エクスポートにより、データストリームをローカルで処理します。
-
マネージドサブスクリプションを使用したデバイス、コネクタ、および Lambda 関数間のローカルネットワークを介した MQTT メッセージング。
-
マネージドサブスクリプションを使用した AWS IoT とデバイス、コネクタと Lambda 関数間の MQTT メッセージング。
-
デバイスの認証と承認を使用したデバイスと AWS クラウド間の安全な接続。
-
デバイスのローカルシャドウ同期。シャドウは AWS クラウドと同期するように設定できます。
-
ローカルデバイスとボリュームリソースへの制御されたアクセス。
-
ローカル推論を実行するためにクラウドでトレーニングされた機械学習モデルのデプロイ。
-
デバイスで Greengrass コアデバイスを検出するための IP アドレス自動検出。
-
新規作成または更新されたグループ設定の一元的デプロイ。設定データをダウンロードすると、コアデバイスが自動的に再起動されます。
-
ユーザー定義の Lambda 関数の安全な無線通信経由 (OTA) のソフトウェア更新。
-
コネクタと Lambda 関数で制御される、ローカルシークレットの安全な暗号化されたストレージ。
AWS IoT Greengrass Core 設定ファイル
Core ソフトウェアの設定ファイルは AWS IoT Greengrass です。config.json
このファイルは、/
ディレクトリにあります。
greengrass-root
/config
greengrass-root
は、デバイスで AWS IoT Greengrass Core ソフトウェアがインストールされているパスを表します。通常、これは /greengrass
ディレクトリです。
の [Default Group creation (デフォルトグループの作成)] オプションを使用する場合、AWS IoT Greengrass コンソール ファイルは動作状態のコアデバイスにデプロイされます。config.json
以下のコマンドを実行して、このファイルのコンテンツを確認できます。
cat /
greengrass-root
/config/config.json
次は、config.json
ファイルの例です。これは、AWS IoT Greengrass コンソール からコアを作成するときに生成されるバージョンです。
サービスエンドポイントはルート CA 証明書タイプと一致する必要があります
AWS IoT Core および AWS IoT Greengrass エンドポイントは、デバイスのルート CA の証明書タイプに対応している必要があります。エンドポイントと証明書の種類が一致しない場合、デバイスと AWS IoT Core または AWS IoT Greengrass の間の認証試行は失敗します。詳細については、の「サーバー認証」を参照してくださいAWS IoT 開発者ガイド。
デバイスが推奨される方法である Amazon Trust Services (ATS) ルート CA 証明書を使用する場合は、デバイス管理と検出データプレーンのオペレーションにも
ATS エンドポイントを使用する必要があります。ATS エンドポイントには、AWS IoT Core エンドポイント用の以下の構文で示すように、ats
セグメントが含まれます。
prefix
-ats.iot.リージョン
.amazonaws.com
下位互換性のために、 AWS IoT Greengrass は現在、一部の AWS リージョンでレガシーVeriSignルート CA 証明書とエンドポイントをサポートしています。レガシーVeriSignルート CA 証明書を使用している場合は、ATS エンドポイントを作成し、代わりに ATS ルート CA 証明書を使用することをお勧めします。それ以外の場合は、対応するレガシーエンドポイントを必ず使用します。詳細については、次のガイドの「サポートされているレガシーエンドポイント」を参照してくださいアマゾン ウェブ サービス全般のリファレンス。
config.json のエンドポイント
Greengrass コアデバイスでは、エンドポイントは config.json ファイル内の coreThing
オブジェクトで指定されます。iotHost
プロパティは AWS IoT Core エンドポイントを表します。ggHost
プロパティは AWS IoT Greengrass エンドポイントを表します。次の例のスニペットでは、これらのプロパティは ATS エンドポイントを指定します。
{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
- AWS IoT Core エンドポイント
-
AWS IoT Core エンドポイントを取得するには、aws iot describe-endpoint CLI コマンドを適切な
--endpoint-type
パラメータで実行します。-
ATS 署名付きエンドポイントを返すには、以下を実行します。
aws iot describe-endpoint --endpoint-type iot:Data-ATS
-
レガシーVeriSignの署名付きエンドポイントを返すには、以下を実行します。
aws iot describe-endpoint --endpoint-type iot:Data
-
- AWS IoT Greengrass エンドポイント
-
AWS IoT Greengrass エンドポイントは、ホストプレフィックスが greengrass に置き換えられた
iotHost
エンドポイントです。たとえば、ATS 署名付きエンドポイントはgreengrass-ats.iot.
です。 これは、AWS IoT Coreエンドポイントと同じリージョンを使用します。リージョン
.amazonaws.com
ポート 443 での接続またはネットワークプロキシを通じた接続
この機能は AWS IoT Greengrass Core v1.7 以降で使用できます。
Greengrass コアは、AWS IoT Core との通信に、TLS クライアント認証を介した MQTT メッセージングプロトコルを使用します。慣例では、TLS を介した MQTT ではポート 8883 を使用します。ただし、セキュリティ対策として、制限の厳しい環境では一定範囲の TCP ポートに対するインバウンドトラフィックとアウトバウンドトラフィックを制限する場合があります。たとえば、企業のファイアウォールでは HTTPS トラフィック用のポート 443 は開いても、あまり一般的ではないプロトコル用の他のポート (MQTT トラフィック用のポート 8883 など) は閉じる場合があります。他の制限の厳しい環境では、すべてのトラフィックに対して HTTP プロキシを経由してインターネットに接続することを義務付ける場合があります。
このようなシナリオで通信を有効にするには、AWS IoT Greengrass で以下の設定を許可します。
-
ポート 443 を介した TLS クライアント認証を使用する MQTT。ネットワークでポート 443 への接続を許可する場合は、デフォルトのポート 8883 ではなく ポート 443 を MQTT トラフィックに使用するように Core を設定できます。ポート 443 への直接接続またはネットワークプロキシサーバーを介した接続を使用できます。
AWS IoT Greengrass では Application Layer Protocol Network
(ALPN) TLS 拡張機能を使用して、この接続を有効にします。デフォルト設定と同様に、ポート 443 での TLS を介した MQTT では証明書ベースのクライアント認証を使用します。 ポート 443 への直接接続を使用するように設定されている場合、コアは AWS IoT Greengrass ソフトウェアの無線経由通信 (OTA) の更新をサポートします。このサポートには、AWS IoT Greengrass コア v1.9.3 以降が必要です。
-
ポート 443 を介した HTTPS 通信。AWS IoT Greengrass はデフォルトでポート 8443 経由で HTTPS トラフィックを送信しますが、ポート 443 を使用するように設定することもできます。
-
ネットワークプロキシを介した接続。ネットワークプロキシサーバーを Greengrass コアに接続するための仲介役として設定できます。基本的な認証と HTTP/HTTPS プロキシのみがサポートされています。
プロキシ設定は、環境変数の
http_proxy
、https_proxy
、およびno_proxy
を通じてユーザー定義の Lambda 関数に渡されます。ユーザー定義の Lambda 関数は、渡されたこれらの設定を使用して、プロキシ経由で接続する必要があります。接続を行うために Lambda 関数によって使用される共通ライブラリ (boto3 や cURL など、および pythonrequests
パッケージ) は通常、デフォルトでこれらの環境変数を使用します。Lambda 関数もこれらの同じ環境変数を指定した場合、AWS IoT Greengrass ではオーバーライドされません。重要 ネットワークプロキシを使用するように設定されている Greengrass Core は、OTA の更新をサポートしていません。
ポート 443 を介した MQTT を設定するには
この機能には AWS IoT Greengrass Core v1.7 or later が必要です。
この手順により、Greengrass コアが AWS IoT Core と MQTT メッセージングにポート 443 を使用できるようになります。
-
次のコマンドを実行して Greengrass デーモンを停止します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
を編集するために su ユーザーとして開きます。greengrass-root
/config/config.json -
coreThing
オブジェクトで、iotMqttPort
プロパティを追加し、値を443
に設定します (以下の例を参照)。{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotMqttPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... } -
デーモンを開始します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
ポート 443 を介した HTTPS を設定するには
この機能には AWS IoT Greengrass Core v1.8 or later が必要です。
次の手順では、HTTPS コミュニケーションにポート 443 を使用するようコアを設定します。
-
次のコマンドを実行して Greengrass デーモンを停止します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
を編集するために su ユーザーとして開きます。greengrass-root
/config/config.json -
coreThing
オブジェクトで、以下の例に示すように、iotHttpPort
およびggHttpPort
プロパティを追加します。{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotHttpPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com","ggHttpPort" : 443,
"keepAlive" : 600 }, ... } -
デーモンを開始します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
ネットワークプロキシを設定するには
この機能には AWS IoT Greengrass Core v1.7 or later が必要です。
次の手順では、HTTP または HTTPS ネットワークプロキシを介してインターネットに接続することを AWS IoT Greengrass に許可します。
-
次のコマンドを実行して Greengrass デーモンを停止します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
を編集するために su ユーザーとして開きます。greengrass-root
/config/config.json -
coreThing
オブジェクトで、以下の例に示すように、networkProxy オブジェクトを追加します。{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600,
"networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } }
}, ... } -
デーモンを開始します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
ネットワークプロキシに関する情報を指定するには、networkProxy
オブジェクトを使用します。このオブジェクトには以下のプロパティがあります。
Field | 説明 |
---|---|
noProxyAddresses |
省略可能。プロキシの対象外となる IP アドレスやホスト名のカンマ区切りリスト。 |
proxy |
接続先のプロキシ。プロキシには以下のプロパティがあります。
|
エンドポイントの許可
Greengrass デバイス と AWS IoT Core または AWS IoT Greengrass 間のコミュニケーションが認証される必要があります。この認証は、登録された X.509 デバイス証明書と暗号化キーに基づいています。認証されたリクエストが追加の暗号化なしでプロキシを通過できるようにするには、次のエンドポイントを許可します。
エンドポイント | ポート | 説明 |
---|---|---|
greengrass. |
443 |
グループ管理用のコントロールプレーンオペレーションに使用されます。 |
または
|
MQTT: 8883 または 443 HTTPS: 8443 または 443 |
シャドウ同期など、デバイス管理用のデータプレーンオペレーションに使用されます。 コアデバイスと接続デバイスが Amazon Trust Services (推奨) ルート CA 証明書、レガシールート CA 証明書、またはその両方を使用しているかどうかに応じて、一方または両方のエンドポイントの使用を許可します。詳細については、を参照してください サービスエンドポイントはルート CA 証明書タイプと一致する必要があります。 |
または
|
8443 または 443 |
デバイス検出オペレーションのために使用されます。 コアデバイスと接続デバイスが Amazon Trust Services (推奨) ルート CA 証明書、レガシールート CA 証明書、またはその両方を使用しているかどうかに応じて、一方または両方のエンドポイントの使用を許可します。詳細については、を参照してください サービスエンドポイントはルート CA 証明書タイプと一致する必要があります。 ポート 443 で接続するクライアントは、Application Layer Protocol Negotiation (ALPN) |
*.s3.amazonaws.com |
443 |
デプロイオペレーションと無線による更新に使用されます。エンドポイントプレフィックスは内部的に制御され、いつでも変更される可能性があるため、この形式には |
logs. |
443 |
Greengrass グループが CloudWatch にログを書き込むように構成されている場合は必須です。 |
AWS IoT Greengrass の書き込みディレクトリの設定
この機能は AWS IoT Greengrass Core v1.6 以降で使用できます。
デフォルトでは、AWS IoT Greengrass Core ソフトウェアは AWS IoT Greengrass がすべての読み取りと書き込みオペレーションを実行する単一ルートディレクトリにデプロイされます。ただし、すべての書き込みオペレーション (ディレクトリおよびファイルの作成を含む) には別のディレクトリを使用するように AWS IoT Greengrass を設定することができます。この場合、AWS IoT Greengrass は 2 つの最上位ディレクトリを使用します。
-
greengrass-root
ディレクトリ。読み取り/書き込みのままにするか、あるいはオプションで読み取り専用にします。これには、AWS IoT Greengrass Core ソフトウェア、およびランタイム中にイミュータブルにする必要のあるその他の重要なコンポーネント (証明書やconfig.json
など) が含まれます。 -
指定する書き込みディレクトリ。これには、ログ、状態情報やデプロイしたユーザー定義の Lambda 関数のような書き込み可能なコンテンツが含まれます。
この設定は次のようなディレクトリ構成になります。
- Greengrass ルートディレクトリ
greengrass-root
/ |-- certs/ | |-- root.ca.pem | |--hash
.cert.pem | |--hash
.private.key | |--hash
.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |--package-version
/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version
.html | |-- runtime/ | |-- java8
/ | |-- nodejs8.10
/ | |-- python3.8
/ | |-- core/- 書き込みディレクトリ
write-directory
/ |-- packages/ | |--package-version
/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/
書き込みディレクトリを設定するには
-
次のコマンドを実行して AWS IoT Greengrass デーモンを停止します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
を編集するために su ユーザーとして開きます。greengrass-root
/config/config.json -
次の例に示すように、
writeDirectory
をパラメータとして追加し、ターゲットディレクトリへのパスを指定します。{ "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/
write-directory
" }注記 writeDirectory
設定を必要に応じて更新することができます。設定を更新すると、AWS IoT Greengrass は新しく指定した書き込みディレクトリを次の起動時に使用しますが、前の書き込むディレクトリのコンテンツを移行することは行いません。 -
これで書き込みディレクトリは設定されため、オプションで
greengrass-root
ディレクトリを読み取り専用にできます。手順については、「Greengrass ルートディレクトリを読み取り専用にするには」を参照してください。それ以外の場合は、AWS IoT Greengrass デーモンを起動します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Greengrass ルートディレクトリを読み取り専用にするには
このステップは、Greengrass ルートディレクトリを読み取り専用にする場合にのみ実行します。書き込みディレクトリは、開始する前に設定する必要があります。
-
必要なディレクトリにアクセス許可を付与します。
-
config.json
の所有者に読み取りおよび書き込み権限を与えます。sudo chmod 0600 /
greengrass-root
/config/config.json -
ggc_user を certs とシステム Lambda ディレクトリの所有者とします。
sudo chown -R ggc_user:ggc_group /
greengrass-root
/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root
/ggc/packages/1.11.0/lambda/注記 デフォルトでは、ggc_user および ggc_group アカウントを使用してシステム Lambda 関数が実行されます。グループレベルのデフォルトのアクセス ID を設定して個別のアカウントを使用する場合は、代わりにそのユーザー (UID) およびグループ (GID) にアクセス権限を付与する必要があります。
-
-
任意のメカニズムを使用して、
greengrass-root
ディレクトリを読み取り専用にします。注記 greengrass-root
ディレクトリを読み取り専用にする 1 つの方法は、ディレクトリを読み取り専用としてマウントすることです。ただし、無線 (OTA) による更新をマウントされたディレクトリの AWS IoT Greengrass Core ソフトウェアに適用するには、このディレクトリをまずアンマウントしてから、更新後に再度マウントする必要があります。上記のumount
とmount
オペレーションをota_pre_update
およびota_post_update
スクリプトに追加できます。OTA 更新の詳細については、「Greengrass OTA Update Agent」および「OTA 更新による管理された再生成」を参照してください。 -
デーモンを開始します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd startステップ 1 のアクセス権限が正しく設定されていない場合、デーモンは起動しません。
MQTT 設定の設定
AWS IoT Greengrass 環境では、ローカルデバイス、Lambda 関数、コネクタ、システムコンポーネントを使用して、相互通信や、AWS IoT Core との通信を行うことができます。すべての通信は、エンティティ間の MQTT 通信を許可するサブスクリプションを管理するコアを通過します。
AWS IoT Greengrass に設定できる MQTT 設定の詳細については、次のセクションを参照してください。
OPC-UA は、産業通信用の情報交換標準です。Greengrass コアで OPC-UA のサポートを実装するには、IoT SiteWise コネクタ.を使用できます。コネクタは、産業用デバイスデータを OPC-UA サーバーから のアセットプロパティに送信します。AWS IoT SiteWise.
サービスのメッセージの品質
AWS IoT Greengrass は、設定および通信のターゲットと方向に応じて、サービス品質 (QoS) レベル 0 または 1 をサポートします。Greengrass コアは、AWS IoT Core との通信ではクライアントとして、ローカルネットワーク上の通信ではメッセージブローカーとして機能します。

MQTT QoS および の詳細については、MQTT ウェブサイトの「ご利用開始にあたって」を参照してください。https://mqtt.org/getting-started/
- AWS クラウドとのコミュニケーション
-
-
アウトバウンドメッセージで QoS 1 を使用
コアはQoS、1. を使用して AWS クラウドターゲット宛てのメッセージを送信します。 AWS IoT Greengrassは MQTT メッセージキューを使用してこれらのメッセージを処理します。メッセージ配信が AWS IoT Core によって確認されない場合、メッセージは後に再試行されるようにスプールされます (キューがいっぱいである場合を除く)。これにより、断続的な接続によるデータ損失を最小限に抑えることができます。
AWS クラウドターゲット宛てのメッセージを保持できるローカルストレージキャッシュの設定方法など、詳細については、「クラウドターゲットの MQTT メッセージキュー」を参照してください。
-
インバウンドメッセージには QoS 0 (デフォルト) または QoS 1 を使用する
デフォルトでは、コアは QoS AWS クラウドソースからのメッセージに対して 0 のメッセージをサブスクライブします。永続セッションを有効にすると、コアは QoS 1 でサブスクライブします。これにより、断続的な接続によるデータ損失を最小限に抑えることができます。これらのサブスクリプションQoSの を管理するには、ローカルスプーラーシステムコンポーネントで永続性設定を設定します。
コアが AWS クラウドターゲットとの永続的なセッションを確立できるようにする方法など、詳細については、「AWS IoT Core を使用した MQTT 永続セッション」を参照してください。
-
- ローカル・ターゲットとの通信
-
すべてのローカル通信は QoS 0 を使用します。コアは、Greengrass Lambda 関数、コネクタ、接続されたデバイスであるローカルターゲットにメッセージを送信しようとします。メッセージの保存や、配信の確認は行われません。メッセージはコンポーネント間のどこにでもドロップできます。
注記 Lambda 関数間の直接通信では MQTT メッセージングは使用されませんが、動作は同じです。
クラウドターゲットの MQTT メッセージキュー
AWS クラウドターゲットを送信先とする MQTT メッセージは、処理待ちとしてキューされます。キュー状態のメッセージは先入れ先出し (FIFO) の順序で処理されます。メッセージが処理され、AWS IoT Core に発行された後、このメッセージはキューから削除されます。
デフォルトでは、Greengrass コアは AWS クラウドターゲット宛ての未処理のメッセージをメモリに保存します。代わりにコアを設定して、未処理のメッセージをメモリあるいはローカルストレージキャッシュに保存できます。インメモリストレージとは異なり、ローカルストレージキャッシュにはコアの再起動の後でも維持される機能があるため (たとえば、グループデプロイ後あるいはデバイスの再起動後など)、AWS IoT Greengrass はメッセージの処理を続けられます。また、ストレージサイズを設定することもできます。
AWS IoT Greengrass は、スプーラーシステムコンポーネント (GGCloudSpooler
Lambda 関数) を使用してメッセージキューを管理します。次の GGCloudSpooler
環境変数を使用して、ストレージ設定を設定できます。
-
GG_CONFIG_STORAGE_TYPE。メッセージキューの場所。以下の値が有効です。
-
FileSystem
。 未処理のメッセージを物理コアデバイスのディスク上のローカルストレージキャッシュに保存します。コアが再起動すると、キュー状態のメッセージは処理のために維持されます。メッセージが処理された後に削除されます。 -
Memory
(デフォルト). 未処理のメッセージをメモリに保存します。コアが再起動すると、キュー状態のメッセージは失われます。このオプションは、制限されたハードウェア機能があるデバイスでの使用に最適です。この設定を使用する場合を使用する場合、サービスの中断が低いときにグループのデプロイあるいはデバイスの再起動を行うことが推奨されます。
-
-
GG_CONFIG_MAX_SIZE_BYTES。ストレージ容量 (バイト単位)。この値は、262144 以上 (256 KB) の任意の正の整数にできます。これより小さなサイズでは、AWS IoT Greengrass Core ソフトウェアが起動できません。デフォルトサイズは 2.5 MB です。サイズ制限に達した場合、最も古いキュー状態のメッセージは新しいメッセージで置き換えられます。
この機能は AWS IoT Greengrass Core v1.6 以降で使用できます。 以前のバージョンでは、キューサイズが 2.5 MB のインメモリストレージを使用します。以前のバージョンでは、ストレージ設定を構成することはできません。
ローカルストレージでメッセージをキャッシュするには
ただし、AWS IoT Greengrass を設定してファイルシステムにメッセージをキャッシュして、コアの再起動でも保持されるようにできます。これを行うには、関数がストレージタイプを
に設定するGGCloudSpooler
関数定義バージョンをデプロイFileSystem
します。 ローカルストレージキャッシュを設定するには、 AWS IoT Greengrass API を使用する必要があります。これをコンソールで実行することはできません。
次の手順では、create-function-definition-version
CLI コマンドを使用して、キュー状態のメッセージをファイルシステムに保存するようにスプーラを設定します。また、2.6 MB キューサイズも設定します。
-
ターゲットの Greengrass グループとグループのバージョンの IDs を取得します。この手順では、これが最新のグループおよびグループのバージョンであることを前提としています。次のクエリは、最後に作成されたグループを返します。
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
または、名前でクエリを実行することもできます。グループ名は一意である必要はないため、複数のグループが返されることがあります。
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"注記 これらの値は にもあります。AWS IoT コンソール. グループ ID は、グループの [設定] ページに表示されます。グループバージョン IDs は、グループの [デプロイ] ページに表示されます。
-
出力のターゲットグループから
Id
値とLatestVersion
値をコピーします。 -
最新のグループバージョンを取得します。
-
置換
group-id
コピーしたId
を に置き換えます。 -
置換
latest-group-version-id
コピーしたLatestVersion
を に置き換えます。
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
出力の
Definition
オブジェクトから、CoreDefinitionVersionArn
を除く他のすべてのグループコンポーネントの ARNs とFunctionDefinitionVersionArn
をコピーします。 これらの値は、新しいグループバージョンを作成するときに使用します。 -
出力の
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 をコピーすることもできます。 -
関数定義に関数定義バージョンを追加します。
-
置換
function-definition-id
関数定義のコピーId
した に置き換えます。 -
置換
arbitrary-function-id
( など)spooler-function
を 関数の名前に置き換えます。 -
このバージョンで
functions
配列に含める任意の Lambda 関数を追加します。get-function-definition-version
コマンドを使用して、既存の関数定義バージョンから Greengrass Lambda 関数を取得できます。
警告 GG_CONFIG_MAX_SIZE_BYTES
の値が 262144 以上に指定されていることを確認します。サイズが小さいと、AWS IoT Greengrass Core ソフトウェアを起動できなくなります。aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'注記 以前に AWS IoT Core で永続セッションをサポートするように
GG_CONFIG_SUBSCRIPTION_QUALITY
環境変数を設定した場合は、この関数インスタンスに含めます。 -
-
出力から 関数定義バージョンの
Arn
をコピーします。 -
システムの Lambda 関数が含まれているグループバージョンを作成します。
-
置換
group-id
グループのId
を使用する -
置換
core-definition-version-arn
最新のグループバージョンからコピーしたCoreDefinitionVersionArn
に置き換えます。 -
置換
function-definition-version-arn
。新しい関数定義バージョンのコピーしたArn
に置き換えます。 -
最新のグループバージョンからコピーした他のグループコンポーネント (ARNs や
SubscriptionDefinitionVersionArn
など) のDeviceDefinitionVersionArn
を置き換えます。 -
使用されていないパラメータをすべて削除します。たとえば、グループバージョンにリソースがない場合には、
--resource-definition-version-arn
を削除します。
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
出力から
Version
をコピーします。これは新しいグループバージョンの ID です。 -
新しいグループバージョンでグループをデプロイします。
-
置換
group-id
グループのコピーしたId
に置き換えます。 -
置換
group-version-id
グループの新しいバージョンのコピーしたVersion
に置き換えます。
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
ストレージの設定を更新するには、AWS IoT Greengrass API を使用して、更新された設定の GGCloudSpooler
関数を含む新しい関数定義バージョンを作成します。次に、この関数定義バージョンを新規のグループバージョンに追加し (他のグループコンポーネントと一緒に)、このグループバージョンをデプロイします。デフォルト設定を復元する場合、GGCloudSpooler
関数を含まない関数定義バージョンをデプロイできます。
このシステム Lambda 関数は、コンソールでは表示されません。ただし、関数が最新のグループバージョンに追加されると、これはコンソールから行うデプロイに含まれます (API を使用して、その置き換えや削除を行う場合を除く)。
AWS IoT Core を使用した MQTT 永続セッション
この機能は AWS IoT Greengrass Core v1.10 以降で使用できます。
Greengrass コアは、AWS IoT メッセージブローカーとの永続セッションを確立できます。永続セッションは、コアがオフラインのときに送信されたメッセージをコアが受信できるようにする継続的な接続です。コアは、接続のクライアントです。
永続セッションでは、AWS IoT メッセージブローカーは、接続中にコアが作成するすべてのサブスクリプションを保存します。コアが切断されると、AWS IoTメッセージブローカーは、QoS1 として発行され、Lambda関数や接続されたデバイスなどのローカルターゲット宛ての未確認メッセージおよび新規メッセージを保存します。コアが再接続されると、永続セッションが再開され、AWS IoT メッセージブローカーによって、保存されたメッセージが最大 10 メッセージ/秒でコアに送信されます。永続セッションには、デフォルトの有効期限が 1 時間に設定されています。これは、メッセージブローカーがコアを切断したことを検出したときに開始されます。詳細については、次のガイドの「MQTT 永続セッション」を参照してくださいAWS IoT 開発者ガイド。
AWS IoT Greengrass は、スプーラーシステムコンポーネント (GGCloudSpooler
Lambda 関数) を使用して、ソースとして AWS IoT を持つサブスクリプションを作成します。永続的なセッションを設定するには、次の GGCloudSpooler
環境変数を使用できます。
-
GG_CONFIG_SUBSCRIPTION_QUALITY。ソースとして AWS IoT を持つサブスクリプションの品質。以下の値が有効です。
-
AtMostOnce
(デフォルト). 永続セッションを無効にします。サブスクリプションは QoS 0 を使用します。 -
AtLeastOncePersistent
。 永続セッションを有効にします。cleanSession
メッセージ0
でCONNECT
フラグを設定し、QoS1 でサブスクライブします。コアが受信する QoS 1 で発行されたメッセージは、Greengrass デーモンのメモリ内作業キューに到達することが保証されます。コアは、メッセージがキューに追加された後にメッセージを承認します。Greengrass Lambdaキューからローカルターゲット ( QoS 関数、コネクタ、 デバイスなど) への後続の通信は 0 として送信AWS IoT Greengrassされ、ローカルターゲットへの配信は保証されません。
注記 maxWorkItemCount設定プロパティを使用して、作業項目キューのサイズを制御できます。たとえば、ワークロードで大量の MQTT トラフィックが必要な場合は、キューのサイズを増やすことができます。
永続セッションを有効にすると、コアは AWS IoT との MQTT メッセージ交換用に、少なくとも 1 つの追加接続を開きます。詳細については、を参照してください IDsを使用した MQTT 接続用のクライアントAWS IoT。
-
MQTT 永続セッションを設定するには
AWS IoT Core で永続セッションを使用するように AWS IoT Greengrass を設定できます。これを行うには、 関数がサブスクリプションの品質を
に設定するGGCloudSpooler
関数定義バージョンをデプロイAtLeastOncePersistent
します。 この設定は、ソースとして AWS IoT Core (cloud
) を持つすべてのサブスクリプションに適用されます。永続セッションを設定するには、AWS IoT Greengrass API を使用する必要があります。これをコンソールで実行することはできません。
次の手順では、create-function-definition-version
CLI コマンドを使用して、永続セッションを使用するようにスプーラーを設定します。この手順では、既存のグループの最新グループバージョンの設定を更新しているものとします。
-
ターゲットの Greengrass グループとグループのバージョンの IDs を取得します。この手順では、これが最新のグループおよびグループのバージョンであることを前提としています。次のクエリは、最後に作成されたグループを返します。
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
または、名前でクエリを実行することもできます。グループ名は一意である必要はないため、複数のグループが返されることがあります。
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"注記 これらの値は にもあります。AWS IoT コンソール. グループ ID は、グループの [設定] ページに表示されます。グループバージョン IDs は、グループの [デプロイ] ページに表示されます。
-
出力のターゲットグループから
Id
値とLatestVersion
値をコピーします。 -
最新のグループバージョンを取得します。
-
置換
group-id
コピーしたId
を に置き換えます。 -
置換
latest-group-version-id
コピーしたLatestVersion
を に置き換えます。
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
出力の
Definition
オブジェクトから、CoreDefinitionVersionArn
を除く他のすべてのグループコンポーネントの ARNs とFunctionDefinitionVersionArn
をコピーします。 これらの値は、新しいグループバージョンを作成するときに使用します。 -
出力の
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 をコピーすることもできます。 -
関数定義に関数定義バージョンを追加します。
-
置換
function-definition-id
関数定義のコピーId
した に置き換えます。 -
置換
arbitrary-function-id
など、 を 関数の名前に置き換えspooler-function
ます。 -
このバージョンで
functions
配列に含める任意の Lambda 関数を追加します。get-function-definition-version
コマンドを使用して、既存の関数定義バージョンから Greengrass Lambda 関数を取得できます。
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'注記 ストレージ設定を定義するために
GG_CONFIG_STORAGE_TYPE
またはGG_CONFIG_MAX_SIZE_BYTES
環境変数を設定した場合は、この関数インスタンスにそれらを含めます。 -
-
出力から 関数定義バージョンの
Arn
をコピーします。 -
システムの Lambda 関数が含まれているグループバージョンを作成します。
-
置換
group-id
グループのId
を使用する -
置換
core-definition-version-arn
最新のグループバージョンからコピーしたCoreDefinitionVersionArn
に置き換えます。 -
置換
function-definition-version-arn
。新しい関数定義バージョンのコピーしたArn
に置き換えます。 -
最新のグループバージョンからコピーした他のグループコンポーネント (ARNs や
SubscriptionDefinitionVersionArn
など) のDeviceDefinitionVersionArn
を置き換えます。 -
使用されていないパラメータをすべて削除します。たとえば、グループバージョンにリソースがない場合には、
--resource-definition-version-arn
を削除します。
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
出力から
Version
をコピーします。これは新しいグループバージョンの ID です。 -
新しいグループバージョンでグループをデプロイします。
-
置換
group-id
グループのコピーしたId
に置き換えます。 -
置換
group-version-id
グループの新しいバージョンのコピーしたVersion
に置き換えます。
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
-
(オプション) コア設定ファイルmaxWorkItemCountのプロパティを増やします。これにより、コアは増加した MQTT トラフィックとローカルターゲットとの通信を処理できます。
これらの設定の変更でコアを更新するには、AWS IoT Greengrass API を使用して、更新された設定と GGCloudSpooler
関数を含む新しい関数定義バージョンを作成します。次に、この関数定義バージョンを新規のグループバージョンに追加し (他のグループコンポーネントと一緒に)、このグループバージョンをデプロイします。デフォルト設定を復元する場合、GGCloudSpooler
関数を含まない関数定義バージョンを作成できます。
このシステム Lambda 関数は、コンソールでは表示されません。ただし、関数が最新のグループバージョンに追加されると、これはコンソールから行うデプロイに含まれます (API を使用して、その置き換えや削除を行う場合を除く)。
IDsを使用した MQTT 接続用のクライアントAWS IoT
この機能は AWS IoT Greengrass Core v1.8 以降で使用できます。
Greengrass コアは、シャドウ同期や証明書の管理などのオペレーション用に、AWS IoT Core を使用した MQTT 接続を開きます。これらの接続では、コアはコアのモノ名に基づいて予測可能なクライアントを生成します。IDs予測可能なクライアントは、 IDsや AWS IoT Device Defender のライフサイクルイベントなど、モニタリング、監査、料金機能で使用できますAWS IoT。予測可能なクライアントを中心にロジックを作成することもできます IDs (たとえば、証明書の属性に基づいてポリシーテンプレートをサブスクライブするなど)。
同時接続IDsで使用される重複クライアントは、無限の接続 - 切断ループを引き起こす場合があります。これは、別のデバイスが接続でクライアント ID をコアデバイス名に使用するようにハードコードされた場合に発生します。詳細については、このトラブルシューティングステップを参照してください。
また、Greengrass デバイスは AWS IoT Device Management の発表 のフリートインデックス作成サービスと完全に統合されます。これにより、デバイス属性、シャドウ状態、およびクラウド内の接続状態に基づいてデバイスにインデックスを付けて検索することができます。たとえば、Greengrass デバイスはモノの名前をクライアント ID として使用する少なくとも 1 つの接続を確立するため、デバイス接続のインデックス作成を使用して、現在 AWS IoT Core に接続または切断されている Greengrass デバイスを検出できます。詳細については、次のガイドの「フリートインデックス作成サービス」を参照してくださいAWS IoT 開発者ガイド。
ローカルメッセージング用の MQTT ポートの設定
この機能には AWS IoT Greengrass Core v1.10 or later が必要です。
Greengrass コアは、ローカルの Lambda 関数、コネクタ、Greengrass デバイス間の MQTT メッセージングのローカルメッセージブローカーとして機能します。デフォルトでは、コアはローカルネットワーク上の MQTT トラフィックにポート 8883 を使用します。ポート 8883 で動作する他のソフトウェアとの競合を避けるために、ポートを変更することもできます。
コアがローカル MQTT トラフィックに使用するポート番号を設定するには
-
次のコマンドを実行して Greengrass デーモンを停止します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
を編集するために su ユーザーとして開きます。greengrass-root
/config/config.json -
coreThing
オブジェクトでggMqttPort
プロパティを追加し、使用するポート番号に値を設定します。有効な値は 1024~65535 です。次の例では、ポート番号を9000
に設定します。{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
"ggMqttPort" : 9000,
"keepAlive" : 600 }, ... } -
デーモンを開始します。
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start -
コアに対して自動 IP 検出が有効になっている場合、設定は完了です。
自動 IP 検出が有効になっていない場合は、コアの接続情報を更新する必要があります。これにより、Greengrass デバイスは検出操作中に正しいポート番号を受け取り、コア接続情報を取得できるようになります。AWS IoT コンソール または AWS IoT Greengrass API を使用して、コア接続情報を更新できます。この手順では、ポート番号のみを更新します。コアのローカル IP アドレスは同じままです。
- コアの接続情報を更新するには (コンソール)
-
-
グループ設定ページで、[Cores (コア)] を選択し、コアを選択します。
-
コア詳細ページで、[Connectivity (接続)] を選択し、[Edit (編集)] を選択します。
-
[Add another connection (別の接続を追加)] を選択し、現在のローカル IP アドレスと新しいポート番号を入力します。次の例では、IP アドレス
192.168.1.8
のポート番号9000
を設定します。 -
古いエンドポイントを削除し、[Update (更新)] を選択します。
-
- コアの接続情報を更新します (API)
-
-
UpdateConnectivityInfo アクションを使用します。次の例では、AWS CLI で
update-connectivity-info
を使用して IP アドレス192.168.1.8
のポート番号9000
を設定します。aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
-
注記 コアが AWS IoT Core との MQTT メッセージングに使用するポートを設定することもできます。詳細については、を参照してください ポート 443 での接続またはネットワークプロキシを通じた接続。
AWS クラウドとの MQTT 接続の発行、サブスクリプション、サブスクリプション解除オペレーションのタイムアウト
この機能は AWS IoT Greengrass v1.10.2 以降で使用できます。
Greengrass コアが AWS IoT Core への MQTT 接続で発行、サブスクリプション、またはサブスクリプション解除オペレーションを完了するまでの時間
(秒単位) を設定できます。帯域幅の制約や待ち時間が長いためオペレーションがタイムアウトする場合は、この設定を調整する必要があります。config.json ファイルでこの設定を構成するには、coreThing
オブジェクトの mqttOperationTimeout
プロパティを追加または変更します。以下に例を示します。
{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "
hash
.cert.pem", "keyPath": "hash
.private.key", ... }, ... }
デフォルトのタイムアウトは 5 秒です。最小タイムアウトは 5 秒です。
自動 IP 検出をアクティブ化する
Greengrass グループのデバイスが自動的に Greengrass コアを検出するように設定できます。AWS IoT Greengrass有効にすると、コアは IP アドレスの変更を監視します。アドレスが変更されると、コアは更新されたアドレスのリストを発行します。これらのアドレスは、コアと同じ Greengrass グループに属するデバイスで使用できるようになります。
接続されたデバイスのAWS IoTポリシーは、コアの接続情報を取得することをデバイスに許可するgreengrass:Discover
アクセス権限を付与する必要があります。このポリシーステートメントの詳細については、「ディスカバリ承認」を参照してください。
この機能を AWS IoT Greengrass コンソール から有効にするには、初めて Greengrass グループをデプロイするときに [自動検出] を選択します。Core 接続情報のグループの設定ページで、この機能を有効または無効にすることもできます。[Automatically detect and override connection information (接続情報を自動的に検出して上書きする)] が選択されている場合は、IP の自動検出が有効になります。
AWS IoT GreengrassAPI で自動検出を管理するには、IPDetector
システムLambda関数を設定する必要があります。次の手順は、create-function-definition-version CLI コマンドを使用して、Greengrass コアの自動検出を設定する方法を示しています。
-
ターゲットの Greengrass グループとグループのバージョンの IDs を取得します。この手順では、これが最新のグループおよびグループのバージョンであることを前提としています。次のクエリは、最後に作成されたグループを返します。
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
または、名前でクエリを実行することもできます。グループ名は一意である必要はないため、複数のグループが返されることがあります。
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"注記 これらの値は にもあります。AWS IoT コンソール. グループ ID は、グループの [設定] ページに表示されます。グループバージョン IDs は、グループの [デプロイ] ページに表示されます。
-
出力のターゲットグループから
Id
値とLatestVersion
値をコピーします。 -
最新のグループバージョンを取得します。
-
置換
group-id
コピーしたId
を に置き換えます。 -
置換
latest-group-version-id
コピーしたLatestVersion
を に置き換えます。
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
出力の
Definition
オブジェクトから、CoreDefinitionVersionArn
を除く他のすべてのグループコンポーネントの ARNs とFunctionDefinitionVersionArn
をコピーします。 これらの値は、新しいグループバージョンを作成するときに使用します。 -
出力の
FunctionDefinitionVersionArn
で、関数定義の ID と関数定義のバージョンをコピーします。arn:aws:greengrass:
region
:account-id
:/greengrass/groups/function-definition-id
/versions/function-definition-version-id
注記 必要に応じて、
create-function-definition
コマンドを実行して関数定義を作成し、出力から ID をコピーすることもできます。 -
現在の定義状態を取得するには、
get-function-definition-version
コマンドを使用します。を使用するにはfunction-definition-id
関数定義のコピー。たとえば、4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
.aws greengrass get-function-definition-version --function-definition-id
function-definition-id
--function-definition-version-idfunction-definition-version-id
リストされている関数設定をメモしておきます。現在の定義設定が失われるのを防ぐために、新しい関数定義バージョンを作成するときにこれらを含める必要があります。
-
関数定義に関数定義バージョンを追加します。
-
置換
function-definition-id
関数定義のコピーId
した に置き換えます。たとえば、4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
. -
置換
arbitrary-function-id
( など)auto-detection-function
を使用します。 -
このバージョンに含めるすべての Lambda 関数を
functions
配列に追加します (前の手順でリストしたものなど)。
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id
","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2 -
-
出力から 関数定義バージョンの
Arn
をコピーします。 -
システムの Lambda 関数が含まれているグループバージョンを作成します。
-
置換
group-id
グループのId
を使用する -
置換
core-definition-version-arn
最新のグループバージョンからコピーしたCoreDefinitionVersionArn
に置き換えます。 -
置換
function-definition-version-arn
。新しい関数定義バージョンのコピーしたArn
に置き換えます。 -
最新のグループバージョンからコピーした他のグループコンポーネント (ARNs や
SubscriptionDefinitionVersionArn
など) のDeviceDefinitionVersionArn
を置き換えます。 -
使用されていないパラメータをすべて削除します。たとえば、グループバージョンにリソースがない場合には、
--resource-definition-version-arn
を削除します。
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
出力から
Version
をコピーします。これは新しいグループバージョンの ID です。 -
新しいグループバージョンでグループをデプロイします。
-
置換
group-id
グループのコピーしたId
に置き換えます。 -
置換
group-version-id
グループの新しいバージョンのコピーしたVersion
に置き換えます。
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Greengrass コアの IP アドレスを手動で入力する場合は、IPDetector
関数を含まない別の関数定義を使用してこのチュートリアルを完了できます。これにより、検出関数が Greengrass コアの IP アドレスを見つけて自動的に入力することを防ぎます。
このシステム Lambda 関数は、Lambda コンソールでは表示されません。この関数が最新のグループバージョンに追加された後は、コンソールから行うデプロイに含まれます (API を使用して、その置き換えや削除を行う場合を除く)。
Init システムを設定して Greengrass デーモンを開始する
起動時に Greengrass デーモンを開始するように init システムを設定することは、特にデバイスの大規模なフリートを管理する場合に推奨されます。
apt
を使用して AWS IoT Greengrass Core ソフトウェアをインストールした場合は、systemd スクリプトを使用して起動時の開始を有効にできます。詳細については、を参照してください
systemd スクリプトを使用した Greengrass デーモンのライフサイクルの管理。
init システムにはさまざまな種類があり (initd、systemd、および SystemV など)、同様の設定パラメータが使用されます。次の例は、systemd
のサービスファイルです。Greengrassd (Greengrass を開始するために使用される) は Greengrass デーモンプロセスを生成するため、Type
パラメータは forking
に設定されます。また、Greengrass が失敗状態になったときに systemd が Greengrass を再起動するように、Restart
パラメータは on-failure
に設定されます。
お使いのデバイスが systemd を使用しているかを確認するには、Module 1 で説明するように check_ggc_dependencies
スクリプトを実行します。次に、systemd を使用するには、config.json の useSystemd
パラメータが yes
に設定されていることを確認します。
[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target
Raspberry Pi で systemd のサービスファイルを作成して有効にする方法についての詳細は、Raspberry Pi ドキュメントの「SYSTEMD