AWS IoT Greengrass
開発者ガイド

AWS IoT Greengrass Core の設定

AWS IoT Greengrass コア は AWS IoT モノ (デバイス) です。他の AWS IoT デバイスと同様に、コアはレジストリ内にあり、デバイスシャドウを保持し、AWS IoT を認証するデバイス証明書を使用します。コアデバイスは AWS IoT Greengrass コア ソフトウェアを実行します。これによって、通信、車道同期やトークン交換などの Greengrass グループのローカルプロセスを管理することができます。

AWS IoT Greengrass Core ソフトウェアには、以下の機能が用意されています。

  • コネクタと Lambda 関数のデプロイとローカル実行。

  • コネクタと Lambda 関数で制御される、ローカルシークレットの安全な暗号化されたストレージ。

  • マネージドサブスクリプションを使用したデバイス、コネクタ、および Lambda 関数間のローカルネットワークを介した MQTT メッセージング。

  • マネージドサブスクリプションを使用した AWS IoT とデバイス、コネクタと Lambda 関数間の MQTT メッセージング。

  • デバイスの認証と承認を使用したデバイスとクラウド間の安全な接続。

  • デバイスのローカルシャドウ同期。シャドウはクラウドと同期するように設定できます。

  • ローカルデバイスとボリュームリソースへの制御されたアクセス。

  • ローカル推論を実行するためにクラウドでトレーニングされた機械学習モデルのデプロイ。

  • デバイスで Greengrass コアデバイスを検出するための IP アドレス自動検出。

  • 新規作成または更新されたグループ設定の一元的デプロイ。設定データをダウンロードすると、コアデバイスが自動的に再起動されます。

  • ユーザー定義の Lambda 関数の安全な無線通信経由のソフトウェア更新。

AWS IoT Greengrass Core 設定ファイル

AWS IoT Greengrass Core ソフトウェアの設定ファイルは config.json です。このファイルは、/greengrass-root/config ディレクトリにあります。

注記

greengrass-root は、デバイスで AWS IoT Greengrass Core ソフトウェアがインストールされているパスを表します。開始方法チュートリアルのステップに従ってソフトウェアをインストールした場合、これが /greengrass ディレクトリです。

AWS IoT Greengrass コンソール から [簡単なグループの作成] オプションを使用した場合、config.json ファイルは動作状態の Core デバイスにデプロイされます。

以下のコマンドを実行して、このファイルのコンテンツを確認できます。

cat /greengrass-root/config/config.json

次は、config.json ファイルの例です。これは、AWS IoT Greengrass コンソール からコアを作成するときに生成されるバージョンです。

GGC v1.9GGC v1.8GGC v1.7GGC v1.6GGC v1.5.0GGC v1.3GGC v1.1GGC v1.0
GGC v1.9
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:リージョン:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.リージョン.amazonaws.com", "ggHost" : "greengrass-ats.iot.リージョン.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json ファイルは以下のプロパティをサポートしています。

coreThing

フィールド 説明 コメント
caPath

/greengrass-root/certs ディレクトリへの AWS IoT ルート CA の相対パス。

1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。

注記

エンドポイントが証明書タイプに対応していることを確認してください。

certPath

/greengrass-root/certs ディレクトリへの Core デバイス証明書の相対パス。

1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。
keyPath /greengrass-root/certs ディレクトリへの Core プライベートキーの相対パス。 1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。
thingArn AWS IoT Greengrass コア デバイスを表す AWS IoT モノの Amazon リソースネーム (ARN)。 使用する Core の ARN は、AWS IoT Greengrass コンソール の [Core] で、または aws greengrass get-core-definition-version CLI コマンドを実行して取得します。
iotHost AWS IoT エンドポイント。

このエンドポイントは、AWS IoT Core コンソール の [設定] で、または aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI コマンドを実行して取得します。

このコマンドは Amazon Trust Services (ATS) エンドポイントを返します。詳細については、「AWS IoT Core でのサーバー認証」を参照してください。

ggHost AWS IoT Greengrass エンドポイント。

これは、ホストプレフィックスが greengrass に置き換えられた iotHost エンドポイントです (greengrass-ats.iot.region.amazonaws.com など)。iotHost と同じ AWS リージョンを使用します。

iotMqttPort 省略可能。AWS IoT との MQTT 通信に使用するポート番号。 有効な値は 8883 または 443 です。デフォルト値は 8883 です。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。
iotHttpPort 省略可能。AWS IoT への HTTPS 接続を確立するために使用されるポート番号。 有効な値は 8443 または 443 です。デフォルト値は 8443 です。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。
ggHttpPort 省略可能。AWS IoT Greengrass サービスへの HTTPS 接続を確立するために使用されるポート番号。 有効な値は 8443 または 443 です。デフォルト値は 8443 です。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。
keepAlive 省略可能。MQTT KeepAlive 期間 (秒単位)。 有効な範囲は 30~1200 秒です。デフォルト値は 600 です。
networkProxy 省略可能。接続先のプロキシサーバーを定義するオブジェクト。 HTTP プロキシまたは HTTPS プロキシを指定できます。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。

runtime

フィールド 説明 コメント
postStartHealthCheckTimeout 省略可能。ヘルスチェックが開始して終了するまで Greengrass デーモンが待機する時間 (ミリ秒単位)。 デフォルトのタイムアウトは 30 秒 (30000 ミリ秒) です。
cgroup
useSystemd デバイスが systemd を使用するかどうかを指定します。 有効な値は yes または no です。モジュール 1check_ggc_dependencies スクリプトを実行して、デバイスが systemd を使用するかどうかを確認します。

crypto

crypto オブジェクトが v1.7.0 で追加されました。このオブジェクトでは、PKCS#11 を使用したハードウェアセキュリティモジュール (HSM) でのプライベートキーストレージをサポートするプロパティと、ローカルでのシークレットストレージをサポートするプロパティを導入しています。詳細については、「AWS IoT Greengrass Core セキュリティプリンシパル」、「ハードウェアセキュリティ統合」、および「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。HSM またはファイルシステムでのプライベートキーストレージの設定がサポートされています。

フィールド 説明 コメント
caPath

AWS IoT ルート CA への絶対パス。

次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

注記

エンドポイントが証明書タイプに対応していることを確認してください。

PKCS11
OpenSSLEngine

省略可能。OpenSSL での PKCS#11 のサポートを有効にするための、OpenSSL エンジン .so ファイルへの絶対パス。

ファイルシステム上のファイルへのパスあることが必要です。

ハードウェアセキュリティで Greengrass OTA 更新エージェント を使用している場合、このプロパティは必須です。詳細については、「無線通信経由更新のサポートを設定する」を参照してください。

P11Provider

PKCS#11 実装の libdl-loadable ライブラリへの絶対パス。

ファイルシステム上のファイルへのパスあることが必要です。

slotLabel

ハードウェアモジュールを識別するために使用されるスロットラベル。

PKCS#11 ラベル仕様に準拠していることが必要です。

slotUserPin

Greengrass Core をモジュールに対して認証するために使用されるユーザー PIN。

設定されたプライベートキーで C_Sign を実行するのに十分なアクセス許可があることが必要です。

principals
IoTCertificate Core が AWS IoT へのリクエストを行うために使用する証明書とプライベートキー。
IoTCertificate  .privateKeyPath

Core プライベートキーへのパス。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。

IoTCertificate  .certificatePath

コアデバイスの証明書への絶対パス。

次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

MQTTServerCertificate

省略可能。Core が MQTT サーバーまたはゲートウェイとして機能するために証明書と組み合わせて使用するプライベートキー。

MQTTServerCertificate  .privateKeyPath

ローカル MQTT サーバーのプライベートキーへのパス。

この値を使用して、ローカル MQTT サーバーの独自のプライベートキーを指定します。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。

このプロパティを省略すると、AWS IoT Greengrass は更新設定に基づいてキーを更新します。指定した場合は、お客様がキーを更新する必要があります。

SecretsManager 暗号化に使用されるデータキーを保護するプライベートキー。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。
SecretsManager  .privateKeyPath

ローカル Secrets Manager のプライベートキーへのパス。

RSA キーのみがサポートされています。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。PKCS#1 v1.5 パディング方式を使用してプライベートキーを生成する必要があります。

以下の設定プロパティもサポートされています。

フィールド 説明 コメント

mqttMaxConnectionRetryInterval

省略可能。MQTT 接続間の最大間隔 (秒数) は、接続がドロップした場合に再試行します。

この値を符号なしの整数として指定します。デフォルト: 60

managedRespawn

省略可能。OTA エージェントが更新前にカスタムコードを実行する必要があることを示します。

有効な値は true または false です。詳細については、「AWS IoT Greengrass Core ソフトウェアの OTA 更新」を参照してください。

writeDirectory

省略可能。AWS IoT Greengrass がすべての読み取り/書き込みリソースを作成する書き込みディレクトリ。

詳細については、「AWS IoT Greengrass の書き込みディレクトリの設定」を参照してください。

GGC v1.8
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:リージョン:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.リージョン.amazonaws.com", "ggHost" : "greengrass-ats.iot.リージョン.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json ファイルは以下のプロパティをサポートしています。

coreThing

フィールド 説明 コメント
caPath

/greengrass-root/certs ディレクトリへの AWS IoT ルート CA の相対パス。

1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。

注記

エンドポイントが証明書タイプに対応していることを確認してください。

certPath

/greengrass-root/certs ディレクトリへの Core デバイス証明書の相対パス。

1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。
keyPath /greengrass-root/certs ディレクトリへの Core プライベートキーの相対パス。 1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。
thingArn AWS IoT Greengrass コア デバイスを表す AWS IoT モノの Amazon リソースネーム (ARN)。 使用する Core の ARN は、AWS IoT Greengrass コンソール の [Core] で、または aws greengrass get-core-definition-version CLI コマンドを実行して取得します。
iotHost AWS IoT エンドポイント。

このエンドポイントは、AWS IoT Core コンソール の [設定] で、または aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI コマンドを実行して取得します。

このコマンドは Amazon Trust Services (ATS) エンドポイントを返します。詳細については、「AWS IoT Core でのサーバー認証」を参照してください。

ggHost AWS IoT Greengrass エンドポイント。

これは、ホストプレフィックスが greengrass に置き換えられた iotHost エンドポイントです (greengrass-ats.iot.region.amazonaws.com など)。iotHost と同じ AWS リージョンを使用します。

iotMqttPort 省略可能。AWS IoT との MQTT 通信に使用するポート番号。 有効な値は 8883 または 443 です。デフォルト値は 8883 です。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。
iotHttpPort 省略可能。AWS IoT への HTTPS 接続を確立するために使用されるポート番号。 有効な値は 8443 または 443 です。デフォルト値は 8443 です。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。
ggHttpPort 省略可能。AWS IoT Greengrass サービスへの HTTPS 接続を確立するために使用されるポート番号。 有効な値は 8443 または 443 です。デフォルト値は 8443 です。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。
keepAlive 省略可能。MQTT KeepAlive 期間 (秒単位)。 有効な範囲は 30~1200 秒です。デフォルト値は 600 です。
networkProxy 省略可能。接続先のプロキシサーバーを定義するオブジェクト。 HTTP プロキシまたは HTTPS プロキシを指定できます。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。

runtime

フィールド 説明 コメント
cgroup
useSystemd デバイスが systemd を使用するかどうかを指定します。 有効な値は yes または no です。モジュール 1check_ggc_dependencies スクリプトを実行して、デバイスが systemd を使用するかどうかを確認します。

crypto

crypto オブジェクトが v1.7.0 で追加されました。このオブジェクトでは、PKCS#11 を使用したハードウェアセキュリティモジュール (HSM) でのプライベートキーストレージをサポートするプロパティと、ローカルでのシークレットストレージをサポートするプロパティを導入しています。詳細については、「AWS IoT Greengrass Core セキュリティプリンシパル」、「ハードウェアセキュリティ統合」、および「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。HSM またはファイルシステムでのプライベートキーストレージの設定がサポートされています。

フィールド 説明 コメント
caPath

AWS IoT ルート CA への絶対パス。

次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

注記

エンドポイントが証明書タイプに対応していることを確認してください。

PKCS11
OpenSSLEngine

省略可能。OpenSSL での PKCS#11 のサポートを有効にするための、OpenSSL エンジン .so ファイルへの絶対パス。

ファイルシステム上のファイルへのパスあることが必要です。

ハードウェアセキュリティで Greengrass OTA 更新エージェント を使用している場合、このプロパティは必須です。詳細については、「無線通信経由更新のサポートを設定する」を参照してください。

P11Provider

PKCS#11 実装の libdl-loadable ライブラリへの絶対パス。

ファイルシステム上のファイルへのパスあることが必要です。

slotLabel

ハードウェアモジュールを識別するために使用されるスロットラベル。

PKCS#11 ラベル仕様に準拠していることが必要です。

slotUserPin

Greengrass Core をモジュールに対して認証するために使用されるユーザー PIN。

設定されたプライベートキーで C_Sign を実行するのに十分なアクセス許可があることが必要です。

principals
IoTCertificate Core が AWS IoT へのリクエストを行うために使用する証明書とプライベートキー。
IoTCertificate  .privateKeyPath

Core プライベートキーへのパス。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。

IoTCertificate  .certificatePath

コアデバイスの証明書への絶対パス。

次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

MQTTServerCertificate

省略可能。Core が MQTT サーバーまたはゲートウェイとして機能するために証明書と組み合わせて使用するプライベートキー。

MQTTServerCertificate  .privateKeyPath

ローカル MQTT サーバーのプライベートキーへのパス。

この値を使用して、ローカル MQTT サーバーの独自のプライベートキーを指定します。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。

このプロパティを省略すると、AWS IoT Greengrass は更新設定に基づいてキーを更新します。指定した場合は、お客様がキーを更新する必要があります。

SecretsManager 暗号化に使用されるデータキーを保護するプライベートキー。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。
SecretsManager  .privateKeyPath

ローカル Secrets Manager のプライベートキーへのパス。

RSA キーのみがサポートされています。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。PKCS#1 v1.5 パディング方式を使用してプライベートキーを生成する必要があります。

以下の設定プロパティもサポートされています。

フィールド 説明 コメント

mqttMaxConnectionRetryInterval

省略可能。MQTT 接続間の最大間隔 (秒数) は、接続がドロップした場合に再試行します。

この値を符号なしの整数として指定します。デフォルト: 60

managedRespawn

省略可能。OTA エージェントが更新前にカスタムコードを実行する必要があることを示します。

有効な値は true または false です。詳細については、「AWS IoT Greengrass Core ソフトウェアの OTA 更新」を参照してください。

writeDirectory

省略可能。AWS IoT Greengrass がすべての読み取り/書き込みリソースを作成する書き込みディレクトリ。

詳細については、「AWS IoT Greengrass の書き込みディレクトリの設定」を参照してください。

GGC v1.7
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:リージョン:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.リージョン.amazonaws.com", "ggHost" : "greengrass-ats.iot.リージョン.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json ファイルは以下のプロパティをサポートしています。

coreThing

フィールド 説明 コメント
caPath

/greengrass-root/certs ディレクトリへの AWS IoT ルート CA の相対パス。

1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。

注記

エンドポイントが証明書タイプに対応していることを確認してください。

certPath

/greengrass-root/certs ディレクトリへの Core デバイス証明書の相対パス。

1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。
keyPath /greengrass-root/certs ディレクトリへの Core プライベートキーの相対パス。 1.7.0 より前のバージョンとの下位互換用。crypto オブジェクトがある場合、このプロパティは無視されます。
thingArn AWS IoT Greengrass コア デバイスを表す AWS IoT モノの Amazon リソースネーム (ARN)。 使用する Core の ARN は、AWS IoT Greengrass コンソール の [Core] で、または aws greengrass get-core-definition-version CLI コマンドを実行して取得します。
iotHost AWS IoT エンドポイント。

このエンドポイントは、AWS IoT Core コンソール の [設定] で、または aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI コマンドを実行して取得します。

このコマンドは Amazon Trust Services (ATS) エンドポイントを返します。詳細については、「AWS IoT Core でのサーバー認証」を参照してください。

ggHost AWS IoT Greengrass エンドポイント。

これは、ホストプレフィックスが greengrass に置き換えられた iotHost エンドポイントです (greengrass-ats.iot.region.amazonaws.com など)。iotHost と同じ AWS リージョンを使用します。

iotMqttPort 省略可能。AWS IoT との MQTT 通信に使用するポート番号。 有効な値は 8883 または 443 です。デフォルト値は 8883 です。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。
keepAlive 省略可能。MQTT KeepAlive 期間 (秒単位)。 有効な範囲は 30~1200 秒です。デフォルト値は 600 です。
networkProxy 省略可能。接続先のプロキシサーバーを定義するオブジェクト。 HTTP プロキシまたは HTTPS プロキシを指定できます。詳細については、「ポート 443 での接続またはネットワークプロキシを通じた接続」を参照してください。

runtime

フィールド 説明 コメント
cgroup
useSystemd デバイスが systemd を使用するかどうかを指定します。 有効な値は yes または no です。モジュール 1check_ggc_dependencies スクリプトを実行して、デバイスが systemd を使用するかどうかを確認します。

crypto

v1.7.0 に追加された crypto オブジェクトでは、PKCS#11 を使用したハードウェアセキュリティモジュール (HSM) でのプライベートキーストレージをサポートするプロパティと、ローカルでのシークレットストレージをサポートするプロパティを導入しています。詳細については、「ハードウェアセキュリティ統合」および「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。HSM またはファイルシステムでのプライベートキーストレージの設定がサポートされています。

フィールド 説明 コメント
caPath

AWS IoT ルート CA への絶対パス。

次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

注記

エンドポイントが証明書タイプに対応していることを確認してください。

PKCS11
OpenSSLEngine

省略可能。OpenSSL での PKCS#11 のサポートを有効にするための、OpenSSL エンジン .so ファイルへの絶対パス。

ファイルシステム上のファイルへのパスあることが必要です。

ハードウェアセキュリティで Greengrass OTA 更新エージェント を使用している場合、このプロパティは必須です。詳細については、「無線通信経由更新のサポートを設定する」を参照してください。

P11Provider

PKCS#11 実装の libdl-loadable ライブラリへの絶対パス。

ファイルシステム上のファイルへのパスあることが必要です。

slotLabel

ハードウェアモジュールを識別するために使用されるスロットラベル。

PKCS#11 ラベル仕様に準拠していることが必要です。

slotUserPin

Greengrass Core をモジュールに対して認証するために使用されるユーザー PIN。

設定されたプライベートキーで C_Sign を実行するのに十分なアクセス許可があることが必要です。

principals
IoTCertificate Core が AWS IoT へのリクエストを行うために使用する証明書とプライベートキー。
IoTCertificate  .privateKeyPath

Core プライベートキーへのパス。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。

IoTCertificate  .certificatePath

コアデバイスの証明書への絶対パス。

次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

MQTTServerCertificate

省略可能。Core が MQTT サーバーまたはゲートウェイとして機能するために証明書と組み合わせて使用するプライベートキー。

MQTTServerCertificate  .privateKeyPath

ローカル MQTT サーバーのプライベートキーへのパス。

この値を使用して、ローカル MQTT サーバーの独自のプライベートキーを指定します。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。

このプロパティを省略すると、AWS IoT Greengrass は更新設定に基づいてキーを更新します。指定した場合は、お客様がキーを更新する必要があります。

SecretsManager 暗号化に使用されるデータキーを保護するプライベートキー。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。
SecretsManager  .privateKeyPath

ローカル Secrets Manager のプライベートキーへのパス。

RSA キーのみがサポートされています。

ファイルシステムストレージの場合、次の形式のファイルの URI である必要があります。file:///absolute/path/to/file

HSM ストレージの場合、オブジェクトラベルを指定する RFC 7512 PKCS#11 パスである必要があります。PKCS#1 v1.5 パディング方式を使用してプライベートキーを生成する必要があります。

以下の設定プロパティもサポートされています。

フィールド 説明 コメント

mqttMaxConnectionRetryInterval

省略可能。MQTT 接続間の最大間隔 (秒数) は、接続がドロップした場合に再試行します。

この値を符号なしの整数として指定します。デフォルト: 60

managedRespawn

省略可能。OTA エージェントが更新前にカスタムコードを実行する必要があることを示します。

有効な値は true または false です。詳細については、「AWS IoT Greengrass Core ソフトウェアの OTA 更新」を参照してください。

writeDirectory

省略可能。AWS IoT Greengrass がすべての読み取り/書き込みリソースを作成する書き込みディレクトリ。

詳細については、「AWS IoT Greengrass の書き込みディレクトリの設定」を参照してください。

GGC v1.6
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:リージョン:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.リージョン.amazonaws.com", "ggHost": "greengrass.iot.リージョン.amazonaws.com", "keepAlive": 600, "mqttMaxConnectionRetryInterval": 60 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true, "writeDirectory": "/write-directory" }

注記

AWS IoT Greengrass コンソール の [Easy group creation (簡単なグループの作成)] オプションを使用する場合、config.json ファイルはデフォルト設定を指定する動作状態にあるコアデバイスにデプロイされます。

config.json ファイルは以下のプロパティをサポートしています。

フィールド 説明 コメント
caPath

/greengrass-root/certs ディレクトリへの AWS IoT ルート CA の相対パス。

/greengrass-root/certs にファイルを保存します。

certPath

/greengrass-root/certs ディレクトリへの AWS IoT Greengrass コア 証明書の相対パス。

/greengrass-root/certs にファイルを保存します。
keyPath /greengrass-root/certs ディレクトリへの AWS IoT Greengrass コア プライベートキーの相対パス。 /greengrass-root/certs にファイルを保存します。
thingArn AWS IoT Greengrass コア デバイスを表す AWS IoT モノの Amazon リソースネーム (ARN)。 使用する Core の ARN は、AWS IoT Greengrass コンソール の [Core] で、または aws greengrass get-core-definition-version CLI コマンドを実行して取得します。
iotHost AWS IoT エンドポイント。 このエンドポイントは、AWS IoT Core コンソール の [設定] で、または aws iot describe-endpoint CLI コマンドを実行して取得します。
ggHost AWS IoT Greengrass エンドポイント。 この値は greengrass.iot.region.amazonaws.com 形式を使用します。iotHost と同じリージョンを使用します。
keepAlive MQTT KeepAlive 期間 (秒単位)。 これはオプションの値です。デフォルト: 600

mqttMaxConnectionRetryInterval

MQTT 接続間の最大間隔 (秒数) は、接続がドロップした場合に再試行します。

この値を符号なしの整数として指定します。これはオプションの値です。デフォルト: 60

useSystemd デバイスが systemd を使用するかどうかを指定します。 有効な値は yes または no です。モジュール 1check_ggc_dependencies スクリプトを実行して、デバイスが systemd を使用するかどうかを確認します。

managedRespawn

オプション の無線 (OTA) 更新機能は、OTA エージェントが更新前にカスタムコードを実行する必要があることを示します。

有効な値は true または false です。詳細については、「AWS IoT Greengrass Core ソフトウェアの OTA 更新」を参照してください。

writeDirectory

AWS IoT Greengrass がすべての読み取り/書き込みリソースを作成する書き込みディレクトリ。

これはオプションの値です。詳細については、「AWS IoT Greengrass の書き込みディレクトリの設定」を参照してください。

GGC v1.5.0
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:リージョン:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.リージョン.amazonaws.com", "ggHost": "greengrass.iot.リージョン.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json ファイルは /greengrass-root/config にあり、次のパラメータを含んでいます。

フィールド 説明 コメント
caPath

/greengrass-root/certs フォルダへの AWS IoT ルート CA の相対パス。

ファイルを /greengrass-root/certs フォルダの下に保存します。

certPath

/greengrass-root/certs フォルダへの AWS IoT Greengrass コア 証明書の相対パス。

ファイルを /greengrass-root/certs フォルダの下に保存します。
keyPath /greengrass-root/certs フォルダへの AWS IoT Greengrass コア プライベートキーの相対パス。 ファイルを /greengrass-root/certs フォルダの下に保存します。
thingArn AWS IoT Greengrass コア デバイスを表す AWS IoT モノの Amazon リソースネーム (ARN)。 使用する Core の ARN は、AWS IoT Greengrass コンソール の [Core] で、または aws greengrass get-core-definition-version CLI コマンドを実行して取得します。
iotHost AWS IoT エンドポイント。 このエンドポイントは、AWS IoT Core コンソール の [設定] で、または aws iot describe-endpoint コマンドを実行して取得します。
ggHost AWS IoT Greengrass エンドポイント。 この値は greengrass.iot.region.amazonaws.com 形式を使用します。iotHost と同じリージョンを使用します。
keepAlive MQTT KeepAlive 期間 (秒単位)。 これはオプションの値です。デフォルト値は 600 秒です。
useSystemd デバイスが systemd を使用するかどうかを指定します。 有効な値は yes または no です。モジュール 1check_ggc_dependencies スクリプトを実行して、デバイスが systemd を使用するかどうかを確認します。

managedRespawn

オプション の無線 (OTA) 更新機能は、OTA エージェントが更新前にカスタムコードを実行する必要があることを示します。

詳細については、「AWS IoT Greengrass Core ソフトウェアの OTA 更新」を参照してください。

GGC v1.3
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:リージョン:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.リージョン.amazonaws.com", "ggHost": "greengrass.iot.リージョン.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json ファイルは /greengrass-root/config にあり、次のパラメータを含んでいます。

フィールド 説明 コメント
caPath

/greengrass-root/certs フォルダへの AWS IoT ルート CA の相対パス。

ファイルを /greengrass-root/certs フォルダの下に保存します。

certPath

/greengrass-root/certs フォルダへの AWS IoT Greengrass コア 証明書の相対パス。

ファイルを /greengrass-root/certs フォルダの下に保存します。
keyPath /greengrass-root/certs フォルダへの AWS IoT Greengrass コア プライベートキーの相対パス。 ファイルを /greengrass-root/certs フォルダの下に保存します。
thingArn AWS IoT Greengrass コア を表す AWS IoT モノの Amazon リソースネーム (ARN)。 この値は AWS IoT Greengrass コンソール の AWS IoT モノの定義にあります。
iotHost AWS IoT エンドポイント。 この値は AWS IoT Core コンソール の [Settings (設定)] にあります。
ggHost AWS IoT Greengrass エンドポイント。 この値は AWS IoT Core コンソール の [Settings (設定)] にあり、greengrass. が前置されています。
keepAlive MQTT KeepAlive 期間 (秒単位)。 これはオプションの値です。デフォルト値は 600 秒です。
useSystemd デバイスが systemd を使用する場合のバイナリフラグ。 有効な値は yes または no です。モジュール 1 の依存関係スクリプトを使用して、デバイスが systemd を使用しているかどうかを確認できます。

managedRespawn

オプション の無線 (OTA) 更新機能は、OTA エージェントが更新前にカスタムコードを実行する必要があることを示します。

詳細については、「AWS IoT Greengrass Core ソフトウェアの OTA 更新」を参照してください。

GGC v1.1
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:リージョン:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.リージョン.amazonaws.com", "ggHost": "greengrass.iot.リージョン.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json ファイルは /greengrass-root/config にあり、次のパラメータを含んでいます。

フィールド 説明 コメント
caPath

/greengrass-root/certs フォルダへの AWS IoT ルート CA の相対パス。

ファイルを /greengrass-root/certs フォルダの下に保存します。

certPath

/greengrass-root/certs フォルダへの AWS IoT Greengrass コア 証明書の相対パス。

ファイルを /greengrass-root/certs フォルダの下に保存します。
keyPath /greengrass-root/certs フォルダへの AWS IoT Greengrass コア プライベートキーの相対パス。 ファイルを /greengrass-root/certs フォルダの下に保存します。
thingArn AWS IoT Greengrass コア を表す AWS IoT モノの Amazon リソースネーム (ARN)。 この値は AWS IoT Greengrass コンソール の AWS IoT モノの定義にあります。
iotHost AWS IoT エンドポイント。 この値は AWS IoT Core コンソール の [Settings (設定)] にあります。
ggHost AWS IoT Greengrass エンドポイント。 この値は AWS IoT Core コンソール の [Settings (設定)] にあり、greengrass. が前置されています。
keepAlive MQTT KeepAlive 期間 (秒単位)。 これはオプションの値です。デフォルト値は 600 秒です。
useSystemd デバイスが systemd を使用する場合のバイナリフラグ。 有効な値は yes または no です。モジュール 1 の依存関係スクリプトを使用して、デバイスが systemd を使用しているかどうかを確認できます。
GGC v1.0

AWS IoT Greengrass Core v1.0 では、config.jsongreengrass-root/configuration にデプロイされます。

{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:リージョン:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.リージョン.amazonaws.com", "ggHost": "greengrass.iot.リージョン.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json ファイルは /greengrass-root/configuration にあり、次のパラメータを含んでいます。

フィールド 説明 コメント
caPath

/greengrass-root/configuration/certs フォルダへの AWS IoT ルート CA の相対パス。

ファイルを /greengrass-root/configuration/certs フォルダの下に保存します。

certPath

/greengrass-root/configuration/certs フォルダへの AWS IoT Greengrass コア 証明書の相対パス。

ファイルを /greengrass-root/configuration/certs フォルダの下に保存します。
keyPath /greengrass-root/configuration/certs フォルダへの AWS IoT Greengrass コア プライベートキーの相対パス。 ファイルを /greengrass-root/configuration/certs フォルダの下に保存します。
thingArn AWS IoT Greengrass コア を表す AWS IoT モノの Amazon リソースネーム (ARN)。 この値は AWS IoT Greengrass コンソール の AWS IoT モノの定義にあります。
iotHost AWS IoT エンドポイント。 この値は AWS IoT Core コンソール の [Settings (設定)] にあります。
ggHost AWS IoT Greengrass エンドポイント。

この値は AWS IoT Core コンソール の [Settings (設定)] にあり、greengrass. が前置されています。

keepAlive MQTT KeepAlive 期間 (秒単位)。 これはオプションの値です。デフォルト値は 600 秒です。
useSystemd デバイスが systemd を使用する場合のバイナリフラグ。 有効な値は yes または no です。モジュール 1 の依存関係スクリプトを使用して、デバイスが systemd を使用しているかどうかを確認できます。

エンドポイントは証明書タイプと一致する必要がある

AWS IoT および AWS IoT Greengrass エンドポイントは、デバイスのルート CA の証明書タイプに対応している必要があります。

Amazon Trust Services (ATS) ルート CA 証明書を使用している場合 (推奨) は、ATS エンドポイントを使用する必要があります。ATS エンドポイントには、AWS IoT エンドポイント用の以下の構文で示すように、ats セグメントが含まれます。

prefix-ats.iot.リージョン.amazonaws.com

一部の AWS リージョンでは、AWS IoT Greengrass は現在、下位互換性のためにレガシーの Verisign エンドポイントとルート CA 証明書もサポートしています。詳細については、アマゾン ウェブ サービス全般のリファレンス の「AWS IoT Greengrass」を参照してください。

レガシーの Verisign ルート CA 証明書を使用している場合、ATS エンドポイントを作成し、代わりに ATS ルート CA 証明書を使用することをお勧めします。詳細については、AWS IoT 開発者ガイドの「サーバーの認証」を参照してください。それ以外の場合は、対応するレガシーエンドポイントを必ず使用します。たとえば、以下の構文が従来の AWS IoT エンドポイントに使用されます。

prefix.iot.リージョン.amazonaws.com

エンドポイントと証明書のタイプが一致しない場合、AWS IoT と AWS IoT Greengrass との認証の試行は失敗します。

config.json のエンドポイント

AWS IoT Greengrass コア デバイスでは、config.json ファイルで、AWS IoT および AWS IoT Greengrass エンドポイントが coreThing オブジェクトで指定されます。iotHost プロパティは AWS IoT エンドポイントを表します。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 エンドポイント

AWS IoT エンドポイントを取得するには、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.リージョン.amazonaws.com です。これは AWS IoT エンドポイントと同じリージョンを使用します。

ポート 443 での接続またはネットワークプロキシを通じた接続

この機能は AWS IoT Greengrass Core v1.7 以降で使用できます。

AWS IoT Greengrass は、AWS IoT との通信に 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 を介した HTTPS 通信。AWS IoT Greengrass はデフォルトでポート 8443 経由で HTTPS トラフィックを送信しますが、ポート 443 を使用するように設定することもできます。

  • ネットワークプロキシを介した接続。ネットワークプロキシサーバーを AWS IoT Greengrass コア に接続するための仲介役として設定できます。基本的な認証と HTTP/HTTPS プロキシのみがサポートされています。

    プロキシ設定は、環境変数の http_proxyhttps_proxy、および no_proxy を通じてユーザー定義の Lambda 関数に渡されます。ユーザー定義の Lambda 関数は、渡されたこれらの設定を使用して、プロキシ経由で接続する必要があります。接続を行うために Lambda 関数によって使用される共通ライブラリ (boto3 や cURL など、および python requests パッケージ) は通常、デフォルトでこれらの環境変数を使用します。Lambda 関数もこれらの同じ環境変数を指定した場合、AWS IoT Greengrass ではオーバーライドされません。

    重要

    ネットワークプロキシを使用するように設定されている Greengrass Core は、無線による更新をサポートしていません。

ポート 443 を介した MQTT を設定するには

この機能には AWS IoT Greengrass v 1.7 or later が必要です。

次の手順では、MQTT メッセージングにポート 443 を使用することを Core を許可します。

  1. 次のコマンドを実行して AWS IoT Greengrass デーモンを停止します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. greengrass-root/config/config.json を編集するために su ユーザーとして開きます。

  3. 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 }, ... }
  4. デーモンを開始します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

ポート 443 を介した HTTPS を設定するには

この機能には AWS IoT Greengrass v 1.8 or later が必要です。

次の手順では、HTTPS コミュニケーションにポート 443 を使用することをコアを許可します。

  1. 次のコマンドを実行して AWS IoT Greengrass デーモンを停止します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. greengrass-root/config/config.json を編集するために su ユーザーとして開きます。

  3. 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 }, ... }
  4. デーモンを開始します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

ネットワークプロキシを設定するには

この機能には AWS IoT Greengrass v 1.7 or later が必要です。

次の手順では、HTTP または HTTPS ネットワークプロキシを介してインターネットに接続することを AWS IoT Greengrass に許可します。

  1. 次のコマンドを実行して AWS IoT Greengrass デーモンを停止します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. greengrass-root/config/config.json を編集するために su ユーザーとして開きます。

  3. 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" } } }, ... }
  4. デーモンを開始します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

networkProxy オブジェクト

ネットワークプロキシに関する情報を指定するには、networkProxy オブジェクトを使用します。このオブジェクトには以下のプロパティがあります。

フィールド 説明
noProxyAddresses

省略可能。プロキシの対象外となる IP アドレスやホスト名のカンマ区切りリスト。

proxy

接続先のプロキシ。プロキシには以下のプロパティがあります。

  • url。プロキシサーバーの URL (scheme://userinfo@host:port 形式)。

    • scheme。スキーム。http または https を指定する必要があります。

    • userinfo。省略可能。ユーザー名とパスワードの情報。指定した場合、username フィールドと password フィールドは無視されます。

    • host。プロキシサーバーのホスト名または IP アドレス。

    • port。省略可能。ポート番号。指定しない場合は、以下のデフォルト値が使用されます。

      • http: 80

      • https: 443

  • username。省略可能。プロキシサーバーの認証に使用するユーザー名。

  • password.省略可能。プロキシサーバーの認証に使用するパスワード。

エンドポイントのホワイトリスト

Greengrass デバイス と AWS IoT または AWS IoT Greengrass 間のコミュニケーションが認証される必要があります。この認証は、登録された X.509 デバイス証明書と暗号化キーに基づいています。認証されたリクエストが追加の暗号化なしでプロキシを通過できるようにするには、次のエンドポイントをホワイトリストに登録します。

エンドポイント ポート 説明
greengrass.リージョン.amazonaws.com 443

グループ管理用のコントロールプレーンオペレーションに使用されます。

prefix-ats.iot.リージョン.amazonaws.com

または

prefix.iot.リージョン.amazonaws.com

MQTT: 8883 または 443

HTTPS: 8443 または 443

シャドウ同期など、デバイス管理用のデータプレーンオペレーションに使用されます。

コアデバイスと接続デバイスが Amazon Trust Services (推奨) ルート CA 証明書、レガシールート CA 証明書、またはその両方を使用しているかどうかに応じて、一方または両方のエンドポイントをホワイトリストに追加します。詳細については、「エンドポイントは証明書タイプと一致する必要がある」を参照してください。

greengrass-ats.iot.リージョン.amazonaws.com

または

greengrass.iot.リージョン.amazonaws.com

8443 または 443

デバイス検出オペレーションのために使用されます。

コアデバイスと接続デバイスが Amazon Trust Services (推奨) ルート CA 証明書、レガシールート CA 証明書、またはその両方を使用しているかどうかに応じて、一方または両方のエンドポイントをホワイトリストに追加します。詳細については、「エンドポイントは証明書タイプと一致する必要がある」を参照してください。

注記

ポート 443 で接続するクライアントは、Application Layer Protocol Negotiation (ALPN) TLS 拡張機能を実装し、ProtocolNameListProtocolName として x-amzn-http-ca を渡す必要があります。詳細については、AWS IoT 開発者ガイド の「プロトコル」を参照してください。

*.s3.amazonaws.com 443

デプロイオペレーションと無線による更新に使用されます。エンドポイントプレフィックスは内部的に制御され、いつでも変更される可能性があるため、この形式には * 文字が含まれます。

logs.リージョン.amazonaws.com 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.7/ | |-- core/
書き込みディレクトリ
write-directory/ |-- packages/ | |-- package-version/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/

 

書き込みディレクトリを設定するには

  1. 次のコマンドを実行して AWS IoT Greengrass デーモンを停止します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. greengrass-root/config/config.json を編集するために su ユーザーとして開きます。

  3. 次の例に示すように、writeDirectory とをパラメータとして追加し、ターゲットディレクトリへのパスを指定します。

    { "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/write-directory" }

    注記

    writeDirectory 設定を必要に応じて更新することができます。設定を更新すると、AWS IoT Greengrass は新しく指定した書き込みディレクトリを次の起動時に使用しますが、前の書き込むディレクトリのコンテンツを移行することは行いません。

  4. これで書き込みディレクトリは設定されため、オプションで greengrass-root ディレクトリを読み込み専用にできます。手順については、「Greengrass ルートディレクトリを読み取り専用にするには」を参照してください。

    それ以外の場合は、AWS IoT Greengrass デーモンを起動します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Greengrass ルートディレクトリを読み取り専用にするには

このステップは、Greengrass ルートディレクトリを読み取り専用にする場合にのみ実行します。書き込みディレクトリは、開始する前に設定する必要があります。

  1. 必要なディレクトリにアクセス許可を付与します。

    1. config.json の所有者に読み取りおよび書き込み権限を与えます。

      sudo chmod 0600 /greengrass-root/config/config.json
    2. 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.9.2/lambda/

      注記

      デフォルトでは、ggc_user および ggc_group アカウントを使用してシステム Lambda 関数が実行されます。グループレベルのデフォルトのアクセス ID を設定して個別のアカウントを使用する場合は、代わりにそのユーザー (UID) およびグループ (GID) にアクセス権限を付与する必要があります。

  2. 任意のメカニズムを使用して、greengrass-root ディレクトリを読み取り専用にします。

    注記

    greengrass-root ディレクトリを読み取り専用にする 1 つの方法は、ディレクトリを読み取り専用としてマウントすることです。ただし、無線 (OTA) による更新をマウントされたディレクトリの AWS IoT Greengrass Core ソフトウェアに適用するには、このディレクトリをまずアンマウントしてから、更新後に再度マウントする必要があります。上記の umountmount オペレーションを ota_pre_update および ota_post_update スクリプトに追加できます。OTA 更新の詳細については、「Greengrass OTA Update Agent」および「Managed Respawn による AWS IoT Greengrass Core 更新」を参照してください。

  3. デーモンを開始します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

    ステップ 1 のアクセス権限が正しく設定されていない場合、デーモンは起動しません。

サービスのメッセージの品質

AWS IoT Greengrass 環境では、ローカルデバイス、Lambda 関数、コネクタ、およびシステムコンポーネントを使用して、相互通信や、クラウドとの通信を行うことができます。通信はすべて、コアを通じて行われます。宛先がローカルのターゲットのメッセージでは、宛先がクラウドのメッセージとは異なるサービス品質 (QoS) レベルが使用されます。

  • ローカルターゲットによるメッセージでは QoS 0 を使用します。 コアはターゲットにメッセージを送信しようとします。メッセージの保存や、配信の確認は行われません。メッセージはコンポーネント間のどこにでもドロップできます。

    注記

    Lambda 関数間の直接通信では MQTT メッセージングは​​使用されませんが、動作は同じです。

  • クラウドターゲットによるメッセージでは QoS 1 を使用します。 コアはこれらのメッセージをスプーラーシステムコンポーネントに送信します。スプーラーシステムコンポーネントは、QoS 1 を使用してそれらをクラウドに送信します。これにより、スプーラーで MQTT メッセージキューを管理することができます。メッセージ配信が AWS IoT によって確認されない場合、メッセージは後に再試行されるようにスプールされます (キューがいっぱいである場合を除く)。詳細については、「MQTT メッセージキュー」を参照してください。

    注記

    QoS 1 はキューを管理するために内部的に使用されますが、メッセージ発行者は QoS 0 を使用して MQTT メッセージのみ送信することができます。

MQTT メッセージキュー

クラウドターゲットを送信先とする MQTT メッセージは、処理待ちとしてキューされます。キュー状態のメッセージは先出し (FIFO) ルールで最初に処理されます。メッセージが処理されてクラウドに公開されると、そのメッセージはキューから削除されます。AWS IoT Greengrass はシステムの GGCloudSpooler Lambda 関数を使用してキューを管理します。

MQTT メッセージキューの設定

この機能は AWS IoT Greengrass Core v1.6 以降で使用できます。

AWS IoT Greengrass を設定して、未処理のメッセージをメモリあるいはローカルストレージキャッシュに保存できます。インメモリストレージとは異なり、ローカルストレージキャッシュにはコアの再起動の後でも維持される機能があるため (たとえば、グループデプロイ後あるいはデバイスの再起動後など)、AWS IoT Greengrass はメッセージの処理を続けられます。また、ストレージサイズを設定することもできます。

注記

バージョン 1.5.0 以前では、キューサイズが 2.5 MB のインメモリストレージを使用します。以前のバージョンでは、ストレージ設定を構成することはできません。

次の GGCloudSpooler Lambda 関数の環境変数は、ストレージの設定を定義するために使用されます。

  • GG_CONFIG_STORAGE_TYPE。メッセージキューの場所。以下の値が有効です。

    • FileSystem.未処理のメッセージをローカルストレージキャッシュに保存します。コアが再起動すると、キュー状態のメッセージは処理のために維持されます。メッセージが処理された後に削除されます。

    • Memory (デフォルト).未処理のメッセージをメモリに保存します。コアが再起動すると、キュー状態のメッセージは失われます。

      このオプションは、制限されたハードウェア機能があるデバイスでの使用に最適です。この設定を使用する場合を使用する場合、サービスの中断が低いときにグループのデプロイあるいはデバイスの再起動を行うことが推奨されます。

  • GG_CONFIG_MAX_SIZE_BYTES。ストレージ容量 (バイト単位)。この値は、262144 以上 (256 KB) の任意の正の整数にできます。これより小さなサイズでは、AWS IoT Greengrass Core ソフトウェアが起動できません。デフォルトサイズは 2.5 MB です。サイズ制限に達した場合、最も古いキュー状態のメッセージは新しいメッセージで置き換えられます。

ローカルストレージでメッセージをキャッシュするには

ファイルシステムにメッセージをキャッシュして、コアの再起動後にも維持されるように AWS IoT Greengrass を設定するには、GGCloudSpooler 関数が FileSystem ストレージタイプを指定する場所で、関数定義バージョンを作成します。ローカルストレージキャッシュを設定するには、AWS IoT Greengrass API を使用する必要があります。これをコンソールで実行することはできません。

次の手順では、create-function-definition-version CLI コマンドを使用して、キュー状態のメッセージをファイルシステムに保存するようにスプーラを設定します。また、2.6 MB キューサイズも設定します。

注記

この手順では、既存のグループの最新グループバージョンの設定を更新しているものとします。

  1. ターゲットの Greengrass グループとグループのバージョンの ID を取得します。

    aws greengrass list-groups

    注記

    list-groups コマンドでは一度に 50 のグループしか返されません。50 を超えるグループがある場合は、希望する結果数 (100 など) を指定し max-results オプションを指定して、グループを見つけます。

    aws greengrass list-groups --max-results 100
  2. 出力からターゲットグループの Id および LatestVersion プロパティをコピーします。

  3. 最新のグループバージョンを取得します。

    • コピーした Idgroup-id を置換えます。

    • コピーした LatestVersionlatest-group-version-id を置換えます。

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 出力の Definition オブジェクトから、CoreDefinitionVersionArn をコピーし、FunctionDefinitionVersionArn を除く他のすべてのグループコンポーネントの ARN もコピーします。上記の値は、新しいグループバージョン作成時に使用します。

  5. 出力の FunctionDefinitionVersionArn で、関数定義の ID をコピーします。この ID は、ARN の functions セグメントに従った GUID です。

    注記

    必要に応じて、create-function-definition コマンドを実行して関数定義を作成し、出力から ID をコピーすることもできます。

  6. 関数定義に関数定義バージョンを追加します。

    • 関数定義用にコピーした Idfunction-definition-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"}]'
  7. 出力から 関数定義バージョンの Arn をコピーします。

  8. システムの Lambda 関数が含まれているグループバージョンを作成します。

    • group-id をこのグループの Id で置き換えます。

    • 最新のグループバージョンからコピーした CoreDefinitionVersionArncore-definition-version-arn を置換えます。

    • 新しい関数定義バージョンにコピーした Arnfunction-definition-version-arn を置換えます。

    • 最新のグループバージョンからコピーした他のグループコンポーネントの ARN (SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn など) を置き換えます。

    • 使用されていないパラメータをすべて削除します。たとえば、グループバージョンにリソースがない場合には、--resource-definition-version-arn を削除します。

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. 出力から Version をコピーします。これは新しいグループバージョンの ID です。

  10. グループをデプロイします。

    • グループにコピーした Idgroup-id を置換えます。

    • 新しいグループバージョンにコピーした Versiongroup-version-id を置換えます。

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

ストレージの設定を更新するには、AWS IoT Greengrass API を使用して、更新された設定の GGCloudSpooler 関数を含む新しい関数定義バージョンを作成します。次に、この関数定義バージョンを新規のグループバージョンに追加し (他のグループコンポーネントと一緒に)、このグループバージョンをデプロイします。デフォルト設定を復元する場合、GGCloudSpooler 関数を含まない関数定義バージョンを作成できます。

このシステム Lambda 関数は、コンソールでは表示されません。ただし、関数が最新のグループバージョンに追加されると、これはコンソールから行うデプロイに含まれます (API を使用して、その置き換えや削除を行う場合を除く)。

AWS IoT を使用した MQTT 接続用クライアント ID

この機能は AWS IoT Greengrass Core v1.8 以降で使用できます。

AWS IoT Greengrass コア は、シャドウ同期や証明書の管理などのオペレーション用に、AWS IoT を使用した MQTT 接続を開きます。このような接続では、コアはコアのモノ名に基づいた予測可能なクライアント ID を生成します。予測可能なクライアント ID は、AWS IoT Device Defender や AWS IoT ライフサイクルイベントなど、モニタリング、監査および料金機能に使用できます。予測可能なクライアント ID を中心としたロジックも作成できます (たとえば、証明書の属性に基づいたサブスクライブポリシーテンプレートなど)。

GGC v1.9GGC v1.8
GGC v1.9

2 つの Greengrass システムコンポーネントによって、AWS IoT を使用した MQTT 接続が開きます。これらのコンポーネントは次のパターンを使用して、接続用のクライアント ID を生成します。

オペレーション クライアント ID のパターン
デプロイ

core-thing-name

例: MyCoreThing

このクライアント ID は、接続、接続解除、ライフサイクルイベント通知へのサブスクライブあるいはサブスクライブ解除に使用します。

AWS IoT を使用した MQTT メッセージの交換

core-thing-name-cnn

例: MyCoreThing-c01

nn は、00 からはじまり、新しい接続ごとに最大で 05 まで増加する整数です。接続数は、AWS IoT とシャドウ状態を共有するデバイスの数 (グループごとに最大で 200) およびグループ内のソースとしての cloud のサブスクリプション数 (グループごとに最大で 50) によって決定されます。

スプーラシステムコンポーネントは AWS IoT への接続を確立し、クラウドソースあるいはターゲットとサブスクリプションのメッセージを交換します。また、スプーラは、AWS IoT とローカルシャドウサービスとデバイス証明書マネージャの間でメッセージを交換するためのプロキシとして動作します。

GGC v1.8

複数の Greengrass システムコンポーネントによって、AWS IoT を使用した MQTT 接続が開きます。これらのコンポーネントは次のパターンを使用して、接続用のクライアント ID を生成します。

オペレーション クライアント ID のパターン
デプロイ

core-thing-name

例: MyCoreThing

このクライアント ID は、接続、接続解除、ライフサイクルイベント通知へのサブスクライブあるいはサブスクライブ解除に使用します。

AWS IoT を使用した MQTT メッセージの交換

core-thing-name-spr

例: MyCoreThing-spr

シャドウ同期

core-thing-name-snn

例: MyCoreThing-s01

nn は、00 からはじまり、新しい接続ごとに最大で 03 まで増加する整数です。接続数は、AWS IoT を使用してシャドウ状態を同期するデバイスの数 (グループごとに最大で 200 個のデバイス) によって決定されます (接続ごとに最大で 50 のサブスクリプション)。

デバイス証明書管理

core-thing-name-dcm

例: MyCoreThing-dcm

注記

同時接続で使用されるクライアント ID の重複は、無限の接続 - 切断ループを引き起こすことがあります。これは、別のデバイスが接続でクライアント ID をコアデバイス名に使用するようにハードコードされた場合に発生します。詳細については、このトラブルシューティングステップを参照してください。

また、Greengrass デバイスは AWS IoT Device Management の発表 のフリートインデックス作成サービスと完全に統合されます。これにより、デバイス属性、シャドウ状態、およびクラウド内の接続状態に基づいてデバイスにインデックスを付けて検索することができます。たとえば、Greengrass デバイスはモノの名前をクライアント ID として使用する少なくとも 1 つの接続を確立するため、デバイス接続のインデックス作成を使用して、現在 AWS IoT に接続または切断されている Greengrass デバイスを検出できます。詳細については、AWS IoT 開発者ガイドの「フリートインデックス作成サービス」を参照してください。

自動 IP 検出をアクティブ化する

IPDetector システム Lambda 関数を使用して AWS IoT Greengrass コア の自動検出を有効にするように、AWS IoT Greengrass を設定できます。この機能は、初めてコンソールからグループをデプロイするとき、またはコンソールのグループ設定ページから Automatic detection を選択していつでも有効にすることもできます。

以下の手順では、 create-function-definition-version CLI コマンドを使用して Greengrass Core の自動検出を設定します。

注記

この手順では、既存のグループの最新グループバージョンの設定を更新しているものとします。

  1. ターゲットの Greengrass グループとグループのバージョンの ID を取得します。

    aws greengrass list-groups

    注記

    list-groups コマンドでは一度に 50 のグループしか返されません。50 を超えるグループがある場合は、希望する結果数 (100 など) を指定し max-results オプションを指定して、グループを見つけます。

    aws greengrass list-groups --max-results 100
  2. 出力からターゲットグループの Id および LatestVersion プロパティをコピーします。

  3. 最新のグループバージョンを取得します。

    • コピーした Idgroup-id を置換えます。

    • コピーした LatestVersionlatest-group-version-id を置換えます。

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 出力の Definition オブジェクトから、CoreDefinitionVersionArn をコピーし、FunctionDefinitionVersionArn を除く他のすべてのグループコンポーネントの ARN もコピーします。上記の値は、新しいグループバージョン作成時に使用します。

  5. 出力の FunctionDefinitionVersionArn で、関数定義の ID と関数定義のバージョンをコピーします。

    arn:aws:greengrass:region:account-id:/greengrass/groups/function-definition-id/versions/function-definition-version-id

    注記

    必要に応じて、create-function-definition コマンドを実行して関数定義を作成し、出力から ID をコピーすることもできます。

  6. 現在の定義状態を取得するには、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-id function-definition-version-id

    リストされている関数設定をメモしておきます。現在の定義設定が失われるのを防ぐために、新しい関数定義バージョンを作成するときにこれらを含める必要があります。

  7. 関数定義に関数定義バージョンを追加します。

    • 関数定義用にコピーした Idfunction-definition-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
  8. 出力から 関数定義バージョンの Arn をコピーします。

  9. システムの Lambda 関数が含まれているグループバージョンを作成します。

    • group-id をこのグループの Id で置き換えます。

    • 最新のグループバージョンからコピーした CoreDefinitionVersionArncore-definition-version-arn を置換えます。

    • 新しい関数定義バージョンにコピーした Arnfunction-definition-version-arn を置換えます。

    • 最新のグループバージョンからコピーした他のグループコンポーネントの ARN (SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn など) を置き換えます。

    • 使用されていないパラメータをすべて削除します。たとえば、グループバージョンにリソースがない場合には、--resource-definition-version-arn を削除します。

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  10. 出力から Version をコピーします。これは新しいグループバージョンの ID です。

  11. グループをデプロイします。

    • グループにコピーした Idgroup-id を置換えます。

    • 新しいグループバージョンにコピーした Versiongroup-version-id を置換えます。

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

AWS IoT Greengrass コア の IP アドレスを手動で入力する場合は、IPDetector 関数を含まない別の機能定義を使用してこのチュートリアルを完了できます。これにより、検出関数が AWS IoT Greengrass コア の IP アドレスを見つけて自動的に入力することを防ぎます。

このシステム Lambda 関数は、Lambda コンソールでは表示されません。この関数が最新のグループバージョンに追加された後は、コンソールから行う展開に含まれます (API を使用して、その置き換えや削除を行う場合を除く)。

Init システムを設定して Greengrass デーモンを開始する

起動時に Greengrass デーモンを開始するように init システムを設定することは、特にデバイスの大規模なフリートを管理する場合に推奨されます。

init システムにはさまざまな種類があり (initd、systemd、および SystemV など)、同様の設定パラメータが使用されます。次の例は、systemd のサービスファイルです。Greengrassd (Greengrass を開始するために使用される) は Greengrass デーモンプロセスを生成するため、Type パラメータは forking に設定されます。また、Greengrass が失敗状態になったときに systemd が Greengrass を再起動するように、Restart パラメータは on-failure に設定されます。

注記

お使いのデバイスが systemd を使用しているかを確認するには、Module 1 で説明するように check_ggc_dependencies スクリプトを実行します。次に、systemd を使用するには、config.jsonuseSystemd パラメータが 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」を参照してください。

AWS IoT Greengrass コアソフトウェアのインストールのアーカイブ

AWS IoT Greengrass Core ソフトウェアを新しいバージョンにアップグレードすると、現在インストールされているバージョンをアーカイブすることができます。これにより現在のインストール環境が維持されるため、同じハードウェア上で新しいソフトウェアバージョンをテストできます。これにより、何らかの理由であなたのアーカイブバージョンに簡単にロールバックすることもできます。

現在のインストールをアーカイブして新しいバージョンをインストールするには

  1. アップグレードする AWS IoT Greengrass Core ソフトウェアインストールパッケージをダウンロードします。

  2. パッケージを宛先コアデバイスにコピーします。ファイルを転送する方法を示す手順については、こちらのステップを参照してください。

    注記

    現在の証明書、キー、および設定ファイルを後で新しいインストールにコピーします。

    コアデバイス端末で次のステップのコマンドを実行します。

  3. コアデバイスで Greengrass デーモンが停止していることを確認します。

    1. デーモンが実行中であるかどうかを確認するには

      ps aux | grep -E 'greengrass.*daemon'

      出力に root/greengrass/ggc/packages/ggc-version/bin/daemon エントリが含まれる場合、デーモンは実行されています。

      注記

      この手順は、AWS IoT Greengrass Core ソフトウェアが /greengrass ディレクトリにインストールされていることを前提に書かれています。

    2. デーモンを停止するには:

      cd /greengrass/ggc/core/ sudo ./greengrassd stop
  4. 現在の Greengrass ルートディレクトリを別のディレクトリに移動します。

    sudo mv /greengrass /greengrass_backup
  5. コアデバイス上の新しいソフトウェアを解凍します。コマンドの os アーキテクチャプレースホルダーとバージョンプレースホルダーを交換します。

    sudo tar –zxvf greengrass-os-architecture-version.tar.gz –C /
  6. アーカイブされた証明書、キー、および設定ファイルを後で新しいインストールにコピーします。

    sudo cp /greengrass_backup/certs/* /greengrass/certs sudo cp /greengrass_backup/config/* /greengrass/config
  7. デーモンを開始します。

    cd /greengrass/ggc/core/ sudo ./greengrassd start

これで、新しいインストールをテストするためのグループデプロイを作成できます。何らかの失敗が発生した場合は、アーカイブされたインストールを復元することができます。

アーカイブされたインストールを復元するには

  1. デーモンを停止します。

  2. 新しい /greengrass ディレクトリを削除します。

  3. /greengrass_backup ディレクトリを /greengrass に戻します。

  4. デーモンを開始します。

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