AWS IoT Greengrass コアソフトウェアの設定 - AWS IoT Greengrass

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

AWS IoT Greengrass コアソフトウェアの設定

AWS IoT Greengrass Core ソフトウェアには、ソフトウェアの設定に使用できるオプションが用意されています。デプロイメントを作成して、 AWS IoT Greengrass 各コアデバイスに Core ソフトウェアを設定できます。

Greengrass nucleus コンポーネントをデプロイする

AWS IoT Greengrass には、Greengrass AWS IoT Greengrass コアデバイスにデプロイできるコンポーネントとして Core ソフトウェアが用意されています。複数の Greengrass コアデバイスに同じ設定を適用するためのデプロイを作成することができます。詳細については、「Greengrass nucleus」および「AWS IoT Greengrass Core ソフトウェア (OTA) の更新」を参照してください。

Greengrass nucleus をシステムサービスとして設定する

次のことを行うには、 AWS IoT Greengrass コアソフトウェアをデバイスの init システムのシステムサービスとして設定する必要があります。

  • デバイスの起動時に AWS IoT Greengrass Core ソフトウェアを起動します。これは、大量のデバイスのフリートを管理する場合に有効な方法です。

  • プラグインコンポーネントをインストールして実行します。 AWS提供されているコンポーネントのいくつかはプラグインコンポーネントで、Greengrass nucleus と直接インターフェースできます。コンポーネントタイプの詳細については、「コンポーネントタイプ」を参照してください。

  • コアデバイスのコアソフトウェアに over-the-air (OTA) アップデートを適用。 AWS IoT Greengrass 詳細については、「AWS IoT Greengrass Core ソフトウェア (OTA) の更新」を参照してください。

  • デプロイメントによってコンポーネントが新しいバージョンに更新されたり、特定の設定パラメータが更新されたりしたときに、 AWS IoT Greengrass コンポーネントがコアソフトウェアまたはコアデバイスを再起動できるようにします。詳細については、「ブートストラップのライフサイクルステップ」を参照してください。

重要

Windows Core デバイスでは、 AWS IoT Greengrass Core ソフトウェアをシステムサービスとして設定する必要があります。

nucleus をシステムサービスとして設定する (Linux)

Linux デバイスは、initd、systemd、SystemV などの様々な初期化システムをサポートします。 AWS IoT Greengrass Core --setup-system-service true ソフトウェアをインストールするときにこの引数を使用して nucleus をシステムサービスとして起動し、デバイスの起動時に起動するように設定します。インストーラは、 AWS IoT Greengrass Core ソフトウェアを systemd のシステムサービスとして設定します。

nucleus がシステムサービスとして実行するように、手動で設定することもできます。次の例は、systemd のサービスファイルです。

[Unit] Description=Greengrass Core [Service] Type=simple PIDFile=/greengrass/v2/alts/loader.pid RemainAfterExit=no Restart=on-failure RestartSec=10 ExecStart=/bin/sh /greengrass/v2/alts/current/distro/bin/loader [Install] WantedBy=multi-user.target

システムサービスを設定したら、以下のコマンドを実行して、起動時にデバイスを起動するように設定したり、 AWS IoT Greengrass Core ソフトウェアを起動または停止したりできます。

  • サービス (systemd) のステータスを確認するには

    sudo systemctl status greengrass.service
  • デバイスの起動時に nucleus を起動できるようにするには。

    sudo systemctl enable greengrass.service
  • デバイスの起動時に nucleus の起動を停止するには。

    sudo systemctl disable greengrass.service
  • AWS IoT Greengrass Core ソフトウェアを起動するには。

    sudo systemctl start greengrass.service
  • AWS IoT Greengrass Core ソフトウェアを停止します。

    sudo systemctl stop greengrass.service

nucleus をシステムサービスとして設定する (Windows)

AWS IoT Greengrass Core ソフトウェアをインストールするときに、--setup-system-service trueこの引数を使用して nucleus を Windows サービスとして起動し、デバイスの起動時に起動するように設定します。

サービスを設定したら、以下のコマンドを実行して、起動時にデバイスを起動するように設定したり、 AWS IoT Greengrass Core ソフトウェアを起動または停止したりできます。これらのコマンドを実行するには、コマンドプロンプトを実行するか、 PowerShell 管理者として実行する必要があります。

Windows Command Prompt (CMD)
  • サービスのステータスを確認するには

    sc query "greengrass"
  • デバイスの起動時に nucleus を起動できるようにするには。

    sc config "greengrass" start=auto
  • デバイスの起動時に nucleus の起動を停止するには。

    sc config "greengrass" start=disabled
  • AWS IoT Greengrass Core ソフトウェアを起動するには。

    sc start "greengrass"
  • AWS IoT Greengrass Core ソフトウェアを停止します。

    sc stop "greengrass"
    注記

    Windows デバイスでは、 AWS IoT Greengrass Core ソフトウェアは Greengrass コンポーネントプロセスをシャットダウンする間、このシャットダウン信号を無視します。このコマンドを実行したときに AWS IoT Greengrass Core ソフトウェアがシャットダウン信号を無視した場合は、数秒待ってからやり直してください。

PowerShell
  • サービスのステータスを確認するには

    Get-Service -Name "greengrass"
  • デバイスの起動時に nucleus を起動できるようにするには。

    Set-Service -Name "greengrass" -Status stopped -StartupType automatic
  • デバイスの起動時に nucleus の起動を停止するには。

    Set-Service -Name "greengrass" -Status stopped -StartupType disabled
  • AWS IoT Greengrass Core ソフトウェアを起動するには。

    Start-Service -Name "greengrass"
  • AWS IoT Greengrass Core ソフトウェアを停止します。

    Stop-Service -Name "greengrass"
    注記

    Windows デバイスでは、 AWS IoT Greengrass Core ソフトウェアは Greengrass コンポーネントプロセスをシャットダウンする間、このシャットダウン信号を無視します。このコマンドを実行したときに AWS IoT Greengrass Core ソフトウェアがシャットダウン信号を無視した場合は、数秒待ってからやり直してください。

JVM オプションでメモリ割り当てを制御する

AWS IoT Greengrass メモリーが限られているデバイスで実行している場合は、Java 仮想マシン (JVM) オプションを使用して、最大ヒープサイズ、ガベージコレクションモード、 AWS IoT Greengrass およびコアソフトウェアが使用するメモリー量を制御するコンパイラーオプションを制御できます。JVM のヒープサイズは、ガベージコレクションが発生する前、あるいはアプリケーションがメモリ不足になる前に、アプリケーションが使用できるメモリ量を決定します。最大ヒープサイズは、多量の作業を実行中にヒープを拡張する場合に JVM が割り当てることのできる最大メモリ容量を指定します。

メモリの割り当てを制御するには、新しいデプロイを作成するか、nucleus コンポーネントが含まれる既存のデプロイを修正し、nucleus コンポーネント設定内の jvmOptions 設定パラメータで JVM オプションを指定します。

要件に応じて、 AWS IoT Greengrass Core ソフトウェアを少ないメモリー割り当てで実行することも、メモリー割り当てを最小限に抑えて実行することもできます。

メモリ割り当ての削減

AWS IoT Greengrass Core ソフトウェアをメモリ割り当てを減らして実行するには、以下の設定マージ更新例を使用して nucleus 設定に JVM オプションを設定することをお勧めします。

{ "jvmOptions": "-Xmx64m -XX:+UseSerialGC -XX:TieredStopAtLevel=1" }
最小限のメモリ割り当て

AWS IoT Greengrass Core ソフトウェアを最小限のメモリ割り当てで実行するには、以下の設定マージ更新例を使用して nucleus 設定に JVM オプションを設定することをお勧めします。

{ "jvmOptions": "-Xmx32m -XX:+UseSerialGC -Xint" }

これらの設定マージ更新例では、次の JVM オプションを使用します。

-XmxNNm

JVM の最大ヒープサイズを設定します。

メモリの割り当てを減らす場合は、-Xmx64m を開始値として指定し、ヒープサイズを 64 MB に制限します。最小限のメモリ割り当てにする場合は、-Xmx32m を開始値として指定し、ヒープサイズを 32 MB に制限します。

実際の要件に応じて、-Xmx の値は増減することができますが、最大ヒープサイズは 16 MB 以下に設定しないことを強く推奨します。最大ヒープサイズが環境に対して低すぎる場合、メモリー不足が原因で AWS IoT Greengrass Core ソフトウェアで予期しないエラーが発生する可能性があります。

-XX:+UseSerialGC

JVM ヒープスペースにシリアルガベージコレクションを使用するように指定します。シリアルガベージコレクタは速度が遅くなりますが、他の JVM ガベージコレクションの実装と比べると使用するメモリが少なくなります。

-XX:TieredStopAtLevel=1

JVM に Java just-in-time (JIT) コンパイラーを 1 回だけ使用するように指示します。JIT でコンパイルされたコードはデバイスメモリ内のスペースを使用するため、JIT コンパイラを複数回使用すると、1 回のコンパイルよりも多くのメモリを消費します。

-Xint

(JIT) コンパイラーを使用しないように JVM に指示します。 just-in-time 代わりに、JVM は解釈専用モードで実行されます。このモードは JIT コンパイルコードを実行する場合よりも速度は遅くなりますが、コンパイルされたコードはメモリ内のスペースを使用しません。

設定マージ更新の作成については、「コンポーネント設定の更新」を参照してください。

コンポーネントを実行するユーザーを設定する

AWS IoT Greengrass Core ソフトウェアは、ソフトウェアを実行するユーザーとは別のシステムユーザーおよびグループとしてコンポーネントプロセスを実行できます。これにより、 AWS IoT Greengrass コアデバイス上で実行されるコンポーネントに対する権限を付与しなくても、コアソフトウェアをルートユーザーまたは管理者ユーザーとして実行できるため、セキュリティが向上します。

次の表は、指定したユーザーとして AWS IoT Greengrass Core ソフトウェアが実行できるコンポーネントの種類を示しています。詳細については、「コンポーネントタイプ」を参照してください。

コンポーネントタイプ コンポーネントユーザを設定する

nucleus

いいえ

プラグイン

いいえ

ジェネリック

はい

Lambda (非コンテナ化)

はい

Lambda (コンテナ化)

はい

デプロイ設定で指定する前に、コンポーネントユーザーを作成する必要があります。Windows ベースのデバイスでは、アカウントの認証情報マネージャインスタンスにユーザーのユーザー名とパスワードも保存する必要があります。 LocalSystem 詳細については、「Windows デバイスでコンポーネントユーザーをセットアップする」を参照してください。

Linux ベースのデバイスでコンポーネントユーザーを設定する場合、オプションでグループを指定することもできます。ユーザーとグループを user:group の形式に従ってコロン (:) で区切って指定します。グループを指定しない場合、 AWS IoT Greengrass Core ソフトウェアはデフォルトでユーザーのプライマリグループになります。名前または ID を使用して、ユーザーとグループを識別できます。

Linux ベースのデバイスでは、コンポーネントを存在しないシステムユーザー (不明なユーザーとも呼ばれる) として実行することで、セキュリティを強化することもできます。Linux プロセスは、同じユーザーによって実行される他のプロセスに信号を送ることができます。不明なユーザーは他のプロセスを実行しないため、コンポーネントを不明なユーザーとして実行して、コンポーネントがコアデバイス上の他のコンポーネントに信号を送るのを防ぐことができます。コンポーネントを不明なユーザーとして実行するには、コアデバイスに存在しないユーザー ID を指定します。不明なグループとして実行する場合は、存在しないグループ ID を指定することもできます。

各コンポーネントと各コアデバイスごとに、ユーザーを設定することができます。

  • コンポーネントの設定

    各コンポーネントが、そのコンポーネントに固有のユーザーで実行されるように設定することができます。デプロイを作成するときに、各コンポーネントのユーザをそのコンポーネントの runWith 設定で指定できます。 AWS IoT Greengrass Core ソフトウェアは、コンポーネントを設定すると、指定されたユーザーとしてコンポーネントを実行します。設定がない場合は、コアデバイス用に設定したデフォルトのユーザーとしてコンポーネントを実行します。デプロイ設定でコンポーネントユーザーを指定するための詳細については、デプロイの作成runWith 設定パラメータを参照してください。

  • コアデバイスのデフォルトユーザーを設定する

    AWS IoT Greengrass Core ソフトウェアがコンポーネントの実行に使用するデフォルトユーザーを設定できます。 AWS IoT Greengrass コアソフトウェアは、コンポーネントを実行するときに、そのコンポーネントのユーザーを指定したかどうかを確認し、そのユーザーを使用してコンポーネントを実行します。コンポーネントがユーザーを指定しない場合、 AWS IoT Greengrass コアソフトウェアはコアデバイス用に設定したデフォルトユーザーとしてコンポーネントを実行します。詳細については、「デフォルトのコンポーネントユーザーを設定する」を参照してください。

注記

Windows ベースのデバイスでは、コンポーネントを実行するにあたり、少なくとも一人のデフォルトユーザーを指定する必要があります。

Linux ベースのデバイスでは、コンポーネントを実行するユーザーを設定しない場合には、以下について考慮する必要があります。

  • AWS IoT Greengrass Core ソフトウェアを root として実行すると、ソフトウェアはコンポーネントを実行しません。root として実行する場合は、コンポーネントを実行するデフォルトユーザーを指定する必要があります。

  • AWS IoT Greengrass Core ソフトウェアを root 以外のユーザーとして実行すると、ソフトウェアはそのユーザーとしてコンポーネントを実行します。

Windows デバイスでコンポーネントユーザーをセットアップする

Windows デバイスでコンポーネントユーザーをセットアップするには
  1. LocalSystem デバイスのアカウントにコンポーネントユーザーを作成します。

    net user /add component-user password
  2. Microsoft PsExec のユーティリティを使用して、 LocalSystem コンポーネントユーザーのユーザー名とパスワードをアカウントの認証情報マネージャーインスタンスに保存します。

    psexec -s cmd /c cmdkey /generic:component-user /user:component-user /pass:password
    注記

    Windows ベースのデバイスでは、 LocalSystem このアカウントは Greengrass nucleus を実行するため、 PsExec ユーティリティを使用してコンポーネントのユーザー情報をアカウントに保存する必要があります。 LocalSystem認証情報マネージャアプリケーションを使用すると、この情報はアカウントではなく、現在ログオンしているユーザーの Windows アカウントに保存されます。 LocalSystem

デフォルトのコンポーネントユーザーを設定する

デプロイを使用して、コアデバイスのデフォルトユーザーを設定できます。このデプロイでは、nucleus コンポーネントの設定を更新します。

注記

--component-default-userオプションを使用して AWS IoT Greengrass Core ソフトウェアをインストールするときに、デフォルトユーザーを設定することもできます。詳細については、「AWS IoT Greengrass Core ソフトウェアをインストールします。」を参照してください。

aws.greengrass.Nucleus コンポーネントに対する、以下の設定更新を指定するデプロイを作成します

Linux
{ "runWithDefault": { "posixUser": "ggc_user:ggc_group" } }
Windows
{ "runWithDefault": { "windowsUser": "ggc_user" } }
注記

指定するユーザーは存在している必要があり、このユーザーのユーザー名とパスワードは Windows LocalSystem デバイス上のアカウントの認証情報マネージャーインスタンスに保存されている必要があります。詳細については、「Windows デバイスでコンポーネントユーザーをセットアップする」を参照してください。

次の例では、ggc_user をデフォルトユーザー、および ggc_group をデフォルトグループとして設定する Linux ベースのデバイスのデプロイを定義しています。merge 設定の更新には、シリアル化された JSON オブジェクトが必要です。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.3", "configurationUpdate": { "merge": "{\"runWithDefault\":{\"posixUser\":\"ggc_user:ggc_group\"}}" } } } }

コンポーネントのシステムリソース制限を設定する

注記

この機能は、Greengrass nucleus コンポーネントの v2.4.0 以降で使用できます。 AWS IoT Greengrass 現在、Windows コアデバイスではこの機能はサポートされていません。

各コンポーネントのプロセスがコアデバイスで使用できる CPU および RAM の最大使用数を設定できます。

下表は、システムリソースの制限をサポートするコンポーネントの種類を示したものです。詳細については、「コンポーネントタイプ」を参照してください。

コンポーネントタイプ システムリソースの制限を設定する

nucleus

いいえ

プラグイン

いいえ

ジェネリック

はい

Lambda (非コンテナ化)

はい

Lambda (コンテナ化)

いいえ

重要

Docker コンテナで AWS IoT Greengrass Core ソフトウェアを実行する場合、システムリソースの制限はサポートされません。

各コンポーネントと各コアデバイスごとに、システムリソースの制限を設定することができます。

  • コンポーネントの設定

    各コンポーネントは、そのコンポーネントに固有のシステムリソース制限を設定することができます。デプロイを作成するときに、デプロイ内の各コンポーネントに対して、システムリソースの制限を指定することができます。コンポーネントがシステムリソース制限をサポートしている場合、 AWS IoT Greengrass Core ソフトウェアは、コンポーネントのプロセスにその制限を適用します。コンポーネントにシステムリソース制限を指定しない場合、 AWS IoT Greengrass コアソフトウェアはコアデバイスに設定したデフォルトをすべて使用します。詳細については、「デプロイの作成」を参照してください。

  • コアデバイスのデフォルトを設定する

    AWS IoT Greengrass Core ソフトウェアがこれらの制限をサポートするコンポーネントに適用するデフォルトのシステムリソース制限を設定できます。 AWS IoT Greengrass Core ソフトウェアがコンポーネントを実行すると、そのコンポーネントに指定したシステムリソース制限が適用されます。そのコンポーネントがシステムリソース制限を指定していない場合、 AWS IoT Greengrass コアソフトウェアはコアデバイスに設定したデフォルトのシステムリソース制限を適用します。デフォルトのシステムリソース制限を指定しない場合、 AWS IoT Greengrass Core ソフトウェアはデフォルトでシステムリソース制限を適用しません。詳細については、「デフォルトのシステムリソース制限を設定する」を参照してください。

デフォルトのシステムリソース制限を設定する

Greengrass nucleus コンポーネントをデプロイして、コアデバイスのデフォルトのシステムリソース制限を設定することができます。デフォルトのシステムリソース制限を設定するには、aws.greengrass.Nucleus コンポーネントに対して次の設定更新を指定するデプロイを作成します

{ "runWithDefault": { "systemResourceLimits": { "cpu": cpuTimeLimit, "memory": memoryLimitInKb } } }

次の例では、CPU 時間制限を 2 (4 つの CPU コアを持つデバイスでの使用量 50% に相当) に設定するデプロイを定義しています。また、この例ではメモリ使用量を 100 MB に設定しています。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.3", "configurationUpdate": { "merge": "{\"runWithDefault\":{\"systemResourceLimits\":\"cpus\":2,\"memory\":102400}}}" } } } }

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

AWS IoT Greengrass コアデバイスは、TLS AWS IoT Core クライアント認証で MQTT メッセージングプロトコルを使用して通信します。慣例では、TLS を介した MQTT ではポート 8883 を使用します。ただし、セキュリティ対策として、制限の厳しい環境では一定範囲の TCP ポートに対するインバウンドトラフィックとアウトバウンドトラフィックを制限する場合があります。例えば、企業のファイアウォールでは HTTPS トラフィック用のポート 443 は開いても、あまり一般的ではないプロトコル用の他のポート (MQTT トラフィック用のポート 8883 など) は閉じる場合があります。他にも、制限のある環境によっては、インターネットに接続する前に、すべてのトラフィックがプロキシを経由する必要が生じる場合もあります。

注記

Greengrass nucleus コンポーネント v2.0.3 以前を実行する Greengrass コアデバイスは、ポート 8443 を使用してデータプレーンエンドポイントに接続します。 AWS IoT Greengrass これらのデバイスは、ポート 8443 でこのエンドポイントに接続できる必要があります。詳細については、「プロキシまたはファイアウォールを介したデバイストラフィックを許可する」を参照してください。

このようなシナリオで通信を有効にするには、 AWS IoT Greengrass 以下の設定オプションが用意されています。

  • ポート 443 を介した MQTT 通信。ネットワークでポート 443 への接続を許可している場合は、デフォルトのポート 8883 ではなくポート 443 を MQTT トラフィックに使用するように、Greengrass コアデバイスを設定することができます。ポート 443 への直接接続またはネットワークプロキシサーバーを介した接続を使用できます。証明書ベースのクライアント認証を使用するデフォルト設定とは異なり、ポート 443 上の MQTT は認証にデバイスのサービスロールを使用します。

    詳細については、「ポート 443 経由で MQTT を設定する」を参照してください。

  • ポート 443 を介した HTTPS 通信。 AWS IoT Greengrass Core ソフトウェアはデフォルトではポート 8443 経由で HTTPS トラフィックを送信しますが、ポート 443 を使用するように構成することもできます。 AWS IoT Greengrass アプリケーション層プロトコルネットワーク (ALPN) TLS 拡張を使用してこの接続を有効にします。デフォルト設定と同様に、ポート 443 経由の HTTPS は証明書ベースのクライアント認証を使用します。

    重要

    ALPN を使用したポート 443 経由の HTTPS 通信を有効にするためには、コアデバイスで Java 8 更新 252 以降が実行されている必要があります。Java バージョン 9 以降のすべての更新も、ALPN をサポートしています。

    詳細については、「ポート 443 経由で HTTPS を設定する」を参照してください。

  • ネットワークプロキシを介した接続。ネットワークプロキシサーバーを Greengrass コアデバイスに接続するための仲介役として設定できます。 AWS IoT Greengrass は、HTTP および HTTPS プロキシに対する基本認証をサポートしています。

    HTTPS プロキシを使用するには、Greengrass コアデバイスで Greengrass nucleus v2.5.0 以降を実行している必要があります。

    AWS IoT Greengrass コアソフトウェアは、、、ALL_PROXYHTTP_PROXYHTTPS_PROXYNO_PROXY環境変数を使用してプロキシ設定をコンポーネントに渡します。コンポーネントはこれらの設定を使用して、プロキシ経由で接続する必要があります。コンポーネントは、一般的なライブラリ (boto3、cURL、python requests パッケージなど) を使用し、通常、これらの環境変数をデフォルトで使用して接続を行います。関数もこれらの同じ環境変数を指定した場合、 AWS IoT Greengrass ではオーバーライドされません。

    詳細については、「ネットワークプロキシを設定する」を参照してください。

ポート 443 経由で MQTT を設定する

既存のコアデバイスに、または新しいコアデバイスに AWS IoT Greengrass Core ソフトウェアをインストールする際に、ポート 443 経由で MQTT を設定することができます。

既存のコアデバイスにポート 443 経由で MQTT を設定する

デプロイを使用して、単一のコアデバイスまたはコアデバイスのグループに MQTT をポート 443 経由で設定できます。このデプロイでは、nucleus コンポーネントの設定を更新します。mqtt 設定を更新すると、nucleus が再起動します。

ポート 443経由で MQTT を設定するには、aws.greengrass.Nucleus コンポーネントに以下の設定更新を指定するデプロイを作成します

{ "mqtt": { "port": 443 } }

次の例では、ポート 443 経由で MQTT を設定するデプロイを定義します。merge 設定の更新には、シリアル化された JSON オブジェクトが必要です。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.3", "configurationUpdate": { "merge": "{\"mqtt\":{\"port\":443}}" } } } }

インストール中にポート 443 経由で MQTT を設定する

AWS IoT Greengrass Core ソフトウェアをコアデバイスにインストールするときに、ポート 443 経由で MQTT を設定できます。ポート 443 経由で MQTT を設定するには、--init-config インストーラ引数を使用します。この引数は、手動によるプロビジョニングフリートプロビジョニング、またはカスタムプロビジョニングでインストールするときに指定できます。

ポート 443 経由で HTTPS を設定する

この機能を使用するには、Greengrass nucleus v2.0.4 以降が必要です。

既存のコアデバイスに、または新しいコアデバイスに AWS IoT Greengrass Core ソフトウェアをインストールする際に、ポート 443 経由で HTTPS を設定することができます。

既存のコアデバイスにポート 443 経由で HTTPS を設定する

デプロイを使用して、単一のコアデバイスまたはコアデバイスのグループに HTTPS をポート 443 経由で設定できます。このデプロイでは、nucleus コンポーネントの設定を更新します。

ポート 443 経由で HTTPS を設定するには、aws.greengrass.Nucleus コンポーネントに以下の設定更新を指定するデプロイを作成します

{ "greengrassDataPlanePort": 443 }

次の例では、ポート 443 経由で HTTPS を設定するデプロイを定義します。merge 設定の更新には、シリアル化された JSON オブジェクトが必要です。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.3", "configurationUpdate": { "merge": "{\"greengrassDataPlanePort\":443}" } } } }

インストール中にポート 443 経由で HTTPS を設定する

AWS IoT Greengrass Core ソフトウェアをコアデバイスにインストールするときに、ポート 443 経由で HTTPS を設定できます。ポート 443 経由で HTTPS を設定するには、--init-config インストーラ引数を使用します。この引数は、手動によるプロビジョニングフリートプロビジョニング、またはカスタムプロビジョニングでインストールするときに指定できます。

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

このセクションの手順に従って、Greengrass コアデバイスが HTTP または HTTPS ネットワークプロキシを介してインターネットに接続するように設定します。コアデバイスが使用するエンドポイントとポートの詳細については、「プロキシまたはファイアウォールを介したデバイストラフィックを許可する」を参照してください。

重要

コアデバイスで Greengrass nucleus v2.4.0 以前のバージョンが動作している場合、ネットワークプロキシを使用するには、デバイスのロールが以下の権限を許可している必要があります。

  • iot:Connect

  • iot:Publish

  • iot:Receive

  • iot:Subscribe

これが必要なのは、 AWS デバイスがトークン交換サービスの認証情報を使用してへの MQTT 接続を認証するためです。 AWS IoTデバイスは MQTT を使用してからデプロイメントを受信してインストールするため AWS クラウド、ロールでこれらの権限を定義しない限り、デバイスは動作しません。デバイスは通常 MQTT 接続を認証するために X.509 証明書を使用しますが、プロキシを使用している場合には、認証にこれを使用できません。

デバイスのロールを設定する方法の詳細については、「コアデバイスが AWS サービスを操作できるように認証する」を参照してください。

既存のコアデバイスでネットワークプロキシを設定する

デプロイを使用して、単一のコアデバイスまたはコアデバイスのグループにネットワークプロキシを設定できます。このデプロイでは、nucleus コンポーネントの設定を更新します。networkProxy 設定を更新すると、nucleus が再起動します。

ネットワークプロキシを設定するには、aws.greengrass.Nucleus コンポーネントに以下の設定更新をマージするデプロイを作成します。この設定更新プログラムには、networkProxy オブジェクトが含まれます。

{ "networkProxy": { "noProxyAddresses": "http://192.168.0.1,www.example.com", "proxy": { "url": "https://my-proxy-server:1100" } } }

次の例では、ネットワークプロキシを設定するデプロイを定義します。merge 設定の更新には、シリアル化された JSON オブジェクトが必要です。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.3", "configurationUpdate": { "merge": "{\"networkProxy\":{\"noProxyAddresses\":\"http://192.168.0.1,www.example.com\",\"proxy\":{\"url\":\"https://my-proxy-server:1100\",\"username\":\"Mary_Major\",\"password\":\"pass@word1357\"}}}" } } } }

インストール中にネットワークプロキシを設定する

AWS IoT Greengrass Core ソフトウェアをコアデバイスにインストールするときに、ネットワークプロキシを設定できます。--init-config インストーラ引数を使用して、ネットワークプロキシを設定します。この引数は、手動によるプロビジョニングフリートプロビジョニング、またはカスタムプロビジョニングでインストールするときに指定できます。

コアデバイスが HTTPS プロキシを信頼できるようにする

HTTPS プロキシを使用するようにコアデバイスを設定する場合は、コアデバイスにプロキシサーバー証明書チェーンを追加して、コアデバイスが HTTPS プロキシを信頼するようにする必要があります。この設定を行わなかった場合、コアデバイスがプロキシ経由でトラフィックをルーティングしようとしたときにエラーが発生する可能性があります。コアデバイスの Amazon ルート CA 証明書ファイルにプロキシサーバー CA 証明書を追加します。

コアデバイスに HTTPS プロキシを信頼させるには
  1. コアデバイス上で Amazon ルート CA 証明書ファイルを検索します。

    Amazon ルート CA 証明書がこれらの場所に存在しない場合は、/greengrass/v2/config/effectiveConfig.yamlsystem.rootCaPath プロパティを確認して場所を見つけます。

  2. Amazon ルート CA 証明書ファイルにプロキシサーバー CA 証明書ファイルの内容を追加します。

    次の例は、Amazon ルート CA 証明書ファイルに追加されたプロキシサーバー CA 証明書を示しています。

    -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ... content of proxy CA certificate ... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ... content of root CA certificate ... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----

networkProxy オブジェクト

ネットワークプロキシに関する情報を指定するには、networkProxy オブジェクトを使用します。このオブジェクトには、次の情報が含まれます。

noProxyAddresses

(オプション) プロキシの対象外となる IP アドレスやホスト名をカンマで区切ったリスト。

proxy

接続先のプロキシ。このオブジェクトには、次の情報が含まれます。

url

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

  • scheme - スキーム。http または https である必要があります。

    重要

    HTTPS プロキシを使用するには、Greengrass コアデバイスで Greengrass nucleus v2.5.0 以降を実行している必要があります。

    HTTPS プロキシを設定する場合は、コアデバイスの Amazon ルート CA 証明書にプロキシサーバー CA 証明書を追加する必要があります。詳細については、「コアデバイスが HTTPS プロキシを信頼できるようにする」を参照してください。

  • userinfo - (オプション) ユーザー名とパスワードの情報。この情報を url で指定する場合、Greengrass コアデバイスは username および password フィールドを無視します。

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

  • port - (オプション) ポート番号。ポートを指定しない場合、Greengrass コアデバイスは次のデフォルト値を使用します。

    • http – 80

    • https – 443

username

(オプション) プロキシサーバーを認証するユーザー名です。

password

(オプション) プロキシサーバーを認証するパスワードです。

プライベート CA によって署名されたデバイス証明書を使用する

カスタムのプライベート認証機関 (CA) を使用する場合は、 Greengrass nucleus の greengrassDataPlaneEndpointiotdata を設定する必要があります。このオプションは、--init-config インストーラ引数を使用するデプロイまたはインストール中に設定できます。

デバイスが接続する Greengrass データプレーンのエンドポイントを、カスタマイズすることができます。この設定オプションを iotdata に設定して、Greengrass データプレーンエンドポイントを (iotDataEndpoint により指定することが可能な) IoT データエンドポイントと同じエンドポイントに設定できます。

MQTT タイムアウトとキャッシュ設定を設定する

AWS IoT Greengrass この環境では、コンポーネントは MQTT AWS IoT Coreを使用してと通信できます。 AWS IoT Greengrass Core ソフトウェアはコンポーネントの MQTT メッセージを管理します。コアデバイスが AWS クラウドへの接続を失うと、ソフトウェアは MQTT メッセージをキャッシュして、接続が復元されたときに後で再試行します。メッセージのタイムアウトやキャッシュのサイズなどの設定を設定できます。詳細については、「Greengrass nucleus コンポーネント」の「mqtt および mqtt.spooler 設定パラメータ」を参照してください。

AWS IoT Core MQTT メッセージブローカーにサービスクォータを課します。これらのクォータは、コアデバイスと AWS IoT Core間に送信されるメッセージに適用される場合があります。詳細については、「AWS 全般のリファレンス」の「AWS IoT Core メッセージブローカーのサービスクォータ」を参照ください。