2023 年 6 月 30 日に AWS IoT Greengrass Version 1 は延長ライフサイクルフェーズに入りました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日付以降、AWS IoT Greengrass V1 の機能、拡張機能、バグ修正、またはセキュリティパッチを提供するアップデートはリリースされません。AWS IoT Greengrass V1 で稼働中のデバイスは中断されず、引き続き動作し、クラウドに接続できます。重要な新機能や新たなプラットフォームのサポートが追加された AWS IoT Greengrass Version 2 への移行を強くお勧めします。
Amazon EC2 インスタンスの設定
AWS IoT Greengrass コアとして使用する Amazon EC2 インスタンスをセットアップするには、このトピックのステップに従います。
ヒント
または、環境を設定して AWS IoT Greengrass Core ソフトウェアをインストールするスクリプトを使用する場合は、「クイックスタート: Greengrass デバイスのセットアップ」を参照してください。
このチュートリアルは Amazon EC2 インスタンスを使用して完了できますが、AWS IoT Greengrass は物理的なハードウェアで使用するのが最適です。Amazon EC2 インスタンスを使用するのではなく、Raspberry Pi のセットアップをお勧めします。Raspberry Pi を使用している場合は、このトピックのステップを実行する必要はありません。
-
AWS Management Console
にサインインし、Amazon Linux AMI を使用して Amazon EC2 インスタンスを起動します。Amazon EC2 インスタンスについては、「Amazon EC2 入門ガイド」を参照してください。 -
Amazon EC2 インスタンスが実行されたら、8883 ポートを有効にして受信 MQTT 通信を許可し、他のデバイスが AWS IoT Greengrass コアと接続できるようにします。
-
Amazon EC2 コンソールのナビゲーションペインで、[Security Group] (セキュリティグループ) を選択します。
-
先ほど起動したインスタンスのセキュリティグループを選択し、[Inbound rules] (インバウンドルール) タブを選択します。
-
[インバウンドのルールを編集] を選択します。
ポート 8883 を有効にするには、セキュリティグループにカスタム TCP ルールを追加します。詳細については、「Amazon EC2 ユーザーガイド」の「セキュリティグループへのルールの追加」を参照してください。
-
[インバウンドのルールの編集] ページで、[ルールを追加] を選択し、次の設定を入力して、[保存] を選択します。
-
[タイプ] で、[カスタム TCP ルール] を選択します。
-
[ポート範囲] に
8883
と入力します。 -
[ソース] で、[任意の場所] を選択します。
-
[説明] に
MQTT Communications
と入力します。
-
-
-
Amazon EC2 インスタンスに接続します。
-
ナビゲーションペインで [インスタンス] を選択し、インスタンスを選択して、[接続] を選択します。
-
[インスタンスへの接続] ページの指示に従って、SSH およびプライベートキーファイルを使用してインスタンスに接続します。
Windows では PuTTY を、macOS ではターミナルを使用できます。詳細については、「Amazon EC2 ユーザーガイド」の「Linux インスタンスへの接続」を参照してください。
これで、AWS IoT Greengrass の Amazon EC2 インスタンスをセットアップする準備ができました。
-
-
Amazon EC2 インスタンスに接続したら、
ggc_user
アカウントとggc_group
アカウントを作成します。sudo adduser --system ggc_user sudo groupadd --system ggc_group
注記
システムで
adduser
コマンドを使用できない場合は、以下のコマンドを使用します。sudo useradd --system ggc_user
-
セキュリティを向上させるには、起動時に Amazon EC2 インスタンスのオペレーティングシステムでハードリンクとソフトリンク (symlink) の保護が有効になっていることを確認します。
注記
ハードリンクとソフトリンクの保護を有効にする手順は、オペレーティングシステムによって異なります。お使いのディストリビューションのドキュメントを参照してください。
-
以下のコマンドを実行して、ハードリンクとソフトリンクの保護が有効になっているかどうかを確認します。
sudo sysctl -a | grep fs.protected
ハードリンクとソフトリンクが
1
に設定されている場合、保護は正しく有効になっています。ステップ 6 に進みます。注記
ソフトリンクは
fs.protected_symlinks
で表されます。 -
ハードリンクとソフトリンクが
1
に設定されていない場合は、これらの保護を有効にします。システム設定ファイルの場所に移動します。cd /etc/sysctl.d ls
-
任意のテキストエディタ (Leafpad、GNU nano、vi など) を使用して、システム設定ファイルの最後に以下の 2 行を追加します。Amazon Linux 1 では、これは
00-defaults.conf
ファイルです。Amazon Linux 2 では、これは99-amazon.conf
ファイルです。ファイルへの書き込みを行えるように (chmod
コマンドを使用して) アクセス許可を変更するか、sudo
コマンドを使用して root として編集する (sudo nano
など) ことが必要な場合があります。00-defaults.conf
fs.protected_hardlinks = 1 fs.protected_symlinks = 1
-
Amazon EC2 インスタンスを再起動します。
sudo reboot
数分後、SSH を使用してインスタンスに接続し、次のコマンドを実行して変更を確認します。
sudo sysctl -a | grep fs.protected
ハードリンクとソフトリンクが 1 に設定されているはずです。
-
-
以下のスクリプトを展開して実行し、Linux コントロールグループ
(cgroups) をマウントします。これにより、AWS IoT Greengrass で Lambda 関数のメモリ制限を設定できるようになります。cgroup は、デフォルトのコンテナ化モードで AWS IoT Greengrass を実行するためにも必要です。 curl https://raw.githubusercontent.com/tianon/cgroupfs-mount/951c38ee8d802330454bdede20d85ec1c0f8d312/cgroupfs-mount > cgroupfs-mount.sh chmod +x cgroupfs-mount.sh sudo bash ./cgroupfs-mount.sh
これで、Amazon EC2 インスタンスは AWS IoT Greengrass の準備ができた状態になります。
-
オプション。Java 8 ランタイムをインストールします。これはストリームマネージャーに必要です。このチュートリアルではストリームマネージャーを使用しませんが、チュートリアルで使用する [デフォルトのグループ作成] ワークフローでは、デフォルトでストリームマネージャーが有効になります。グループをデプロイする前に、以下のコマンドを使用してコアデバイスに Java 8 ランタイムをインストールするか、またはストリームマネージャーを無効にする必要があります。ストリームマネージャーを無効にする手順については、モジュール 3 を参照してください。
-
Debian ベースのディストリビューションの場合:
sudo apt install openjdk-8-jdk
-
Red Hat ベースのディストリビューションの場合:
sudo yum install java-1.8.0-openjdk
-
-
必要なすべての依存関係がそろっていることを確認するには、GitHub のAWS IoT Greengrassサンプル
リポジトリから Greengrass 依存関係チェッカーをダウンロードして実行します。これらのコマンドは、Amazon EC2 インスタンスで依存関係チェッカースクリプトをダウンロード、解凍、実行します。 mkdir greengrass-dependency-checker-GGCv1.11.x cd greengrass-dependency-checker-GGCv1.11.x wget https://github.com/aws-samples/aws-greengrass-samples/raw/master/greengrass-dependency-checker-GGCv1.11.x.zip unzip greengrass-dependency-checker-GGCv1.11.x.zip cd greengrass-dependency-checker-GGCv1.11.x sudo ./check_ggc_dependencies | more
重要
このチュートリアルでは、ローカル Lambda 関数を実行するには Python 3.7 ランタイムが必要です。ストリームマネージャーが有効な場合は、Java 8 ランタイムも必要です。これらのランタイムの前提条件が不足しているという警告が
check_ggc_dependencies
スクリプトによって表示される場合は、続行する前に必ずインストールしてください。その他の欠落しているオプションのランタイム前提条件に関する警告は無視できます。
これで、Amazon EC2 インスタンスの設定は完了です。「モジュール 2: AWS IoT Greengrass Core ソフトウェアのインストール」に進みます。