AWS IoT Greengrass 2.14で追加されたnucleus liteを取り急ぎ試しました

Greengrassの2.14でnucleus liteが追加されました。

https://aws.amazon.com/jp/about-aws/whats-new/2024/12/aws-iot-greengrass-v2-14-lightweight-edge-runtime-software/

軽量が売りです。

これまでのnucleus（マネジメントコンソール上の表記はNucleus Classic）はJavaで実装されていましたが、nucleus liteはC言語で実装されています。

nucleusの全機能が提供されているわけではありません。
2024/12/18時点でnucleus liteがサポートしているAWS提供コンポーネントは以下の通りです。

* CloudWatch metrics
* Secure tunneling
* Stream manager

まだ少ないですね。

参考：https://docs.aws.amazon.com/greengrass/v2/developerguide/public-components.html

とりあえずインストールしてみて、ディスクとメモリの使用量を確認しました。

## 環境

EC2
* Ubuntu Server 24.04 LTS (HVM), SSD Volume Type
* arm64
* t4.micro（2 vCPU、0.5 GiB メモリ）
* 8GiBストレージ

## インストール（Nucleus Classic）

1. 左メニューの「Greengrassデバイス」の「コアデバイス」を選択します
    「コアデバイスをセットアップ」メニューの「１つのCoreデバイスをセットアップ」を選択します

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/96fcff64-1ab9-b5be-0537-c63a6415f146.png)

1. コアデバイス名とモノのグループの情報を入力します（とりあえずデフォルトでOK）

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/3fd615bd-5174-1df6-5eb0-ab0282d9ef5e.png)

1. 「Nucleus Classic」を選択します
    オペレーティングシステムは「Linux」を選択します
    「インストーラのダウンロードでデバイスをセットアップ」を選択します

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/343254d5-280a-3826-23ac-aa6ee6641277.png)

1. 「モノを作成」ボタンをクリックします
    「接続キットをダウンロード」をクリックしNucleusClassic-connectionKit.zipをダウンロードします
    「インストーラをダウンロード」をクリックしgreengrass-nucleus-latest.zipをダウンロードします

    ![us-east-1.console.aws.amazon.com_iot_home_region=us-east-1 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/b1b07b20-e6d1-4aff-3d3f-789b1557de75.png)

1. 以下のコマンドを実行します

    :::note
    ダウンロードしたファイルはS3に格納し、`s3 sync`でコピーする手順にしています
   :::

    ```shell
    sudo su - ubuntu
    ```
    ```shell
    sudo apt update
    sudo apt install -y unzip default-jdk

    # AWS CLIをインストール
    curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    sudo ./aws/install
    
    aws s3 sync s3://637423213562-us-east-1-greengrass/classic/ ./
    
    unzip greengrass-nucleus-latest.zip -d GreengrassInstaller
    sudo mkdir -p /greengrass/v2
    sudo unzip NucleusClassic-connectionKit.zip -d /greengrass/v2
    sudo sed -i 's|{{config_dir}}|/greengrass/v2|g; s|{{nucleus_component}}|aws.greengrass.Nucleus|g' /greengrass/v2/config.yaml && sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE -jar ./GreengrassInstaller/lib/Greengrass.jar --init-config /greengrass/v2/config.yaml --component-default-user ggc_user:ggc_group --setup-system-service true
    ```

## インストール（Nucleus Lite）

1. 左メニューの「Greengrassデバイス」の「コアデバイス」を選択します
    「コアデバイスをセットアップ」メニューの「１つのCoreデバイスをセットアップ」を選択します

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/96fcff64-1ab9-b5be-0537-c63a6415f146.png)

1. コアデバイス名とモノのグループの情報を入力します（とりあえずデフォルトでOK）

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/3fd615bd-5174-1df6-5eb0-ab0282d9ef5e.png)

1. 「Nucleus Lite」を選択します
    「パッケージのダウンロードでデバイスをセットアップ (約 1 MB)」を選択します

    ![us-east-1.console.aws.amazon.com_iot_home_region=us-east-1 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/9290fe0c-3920-30f9-a692-db20d6f93811.png)

1. 「モノを作成」ボタンをクリックします
    「接続キットをダウンロード」をクリックしNucleusLite-connectionKit.zipをダウンロードします
    「インストーラをダウンロード」をクリックしaws-greengrass-lite-ubuntu-arm64.zipをダウンロードします

    ![us-east-1.console.aws.amazon.com_iot_home_region=us-east-1 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f196dcc5-4194-a766-6045-72f1a5e3cfa9.png)

1. 以下のコマンドを実行します

    :::note
    ダウンロードしたファイルはS3に格納し、`s3 sync`でコピーする手順にしています
   :::

    ```shell
    sudo su - ubuntu
    ```
    ```shell
    sudo apt update
    sudo apt upgrade -y
    
    sudo apt install -y unzip

    # AWS CLIをインストール
    curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    sudo ./aws/install
    
    aws s3 sync s3://637423213562-us-east-1-greengrass/lite/ ./
    
    unzip aws-greengrass-lite-ubuntu-arm64.zip    sudo mkdir -p /greengrass/v2
    # 以下のファイルが同一ディレクトリ内にあることを確認
    ls -l install-greengrass-lite.sh aws-greengrass-lite-0.1.1-Linux.deb NucleusLite-connectionKit.zip

    sudo ./install-greengrass-lite.sh
    ```

## メトリクスを確認

CloudWatchメトリクスを確認しました。

一番左が何もインストールしないで起動した状態、真ん中がNucleus Classic、一番右がNucleus Liteです。

![us-east-1.console.aws.amazon.com_cloudwatch_home_region=us-east-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/7caac206-a2dd-2553-3eb9-e2874563bc8d.png)



* メモリ使用量（100% = 512MiB）

    | 未インストール | Nucleus Classic | Nucleus Lite |
    | --- | --- | --- |
    | 223.232MiB | 317.952MiB | 234.496MiB |

* ディスク使用量（100% = 8GiB）

    | 未インストール | Nucleus Classic | Nucleus Lite |
    | --- | --- | --- |
    | 2.952GiB | 4.624GiB | 3.8GiB |


確かにメモリとディスクの使用量は抑えられているようです。

# まとめ

インストーラーが.deb形式だけの提供なので、Amazon Linux 2023では自前でビルドする必要がありそうです。ただ、エッジデバイス向けOSとしてはRaspberry Pi OSやUbuntuがデファクトなのかもしれません。

それはそうと、インストール手順が簡単になっていて、びっくりでした。