Jetson NanoでAWS IoT Greengrassを使う 環境設定編

記事タイトルとURLをコピーする

なんだかんだあってJetson Nano 開発者キットを買いました。

B01版が発売される直前に買ったので、A02版ですわ。

せっかくなのでAWS IoTと絡めて何かしたいと思います。

今回はとりあえずAWS IoT Greengrassの環境設定。

こちらのドキュメントのモジュール1, 2を実施します。

1. AWS IoT Greengrass Core用ユーザー作成

はい、作成します。

sudo adduser --system ggc_user
sudo addgroup --system ggc_group

2. Java 8ランタイムのインストール

はい、インストールします。

sudo apt install openjdk-8-jdk

3. 依存チェッカースクリプトの実行

以下を実行して依存チェッカースクリプトを実行し、

mkdir greengrass-dependency-checker-GGCv1.10.x
cd greengrass-dependency-checker-GGCv1.10.x
wget https://github.com/aws-samples/aws-greengrass-samples/raw/master/greengrass-dependency-checker-GGCv1.10.x.zip
unzip greengrass-dependency-checker-GGCv1.10.x.zip
cd greengrass-dependency-checker-GGCv1.10.x
sudo ./check_ggc_dependencies | more

ワタシの環境では特にエラーは出ませんでしたが、以下のようにLambdaで利用する言語が足りないと表示されました。使いたいものが足りてないといわれたらインストールしましょう。


Missing optional dependencies: 1. Could not find the binary 'python3.7'. If Python 3.7 is installed on the device, name the binary 'python3.7' and add its parent directory to the PATH environment variable. Python 3.7 is required to execute Python 3.7 lambdas on Greengrass core. 2. Could not find the binary 'nodejs12.x'. {略} 3. Could not find the binary 'java8'. {略}

4. AWS IoT Greengrassのグループ作成

ここからはAWSマネージメントコンソールでの作業となります。

AWS IoTのコンソールを開き、Greengrassから「グループの作成」をクリック。

今回はグループの設定はデフォルトとします。

いい感じに名前を入力します。

また、いい感じに名前を入力します。

代わりにやってくれるそうです。「作成」をクリック。

証明書をダウンロードして、「完了」。

5. AWS IoT Greengrassの起動

ここからはまたデバイス側での作業です。

4でダウンロードした証明書とAWS IoT Greengrass Core SoftwareをJetson NanoへSCP転送し展開します。

※上記リンクのダウンロードページのAWS IoT Greengrass Core Software v1.10にはUbuntu用のものがありませんが、ワタシの環境ではArch LinuxのものでAWS IoT Greengrass Coreで起動しました。v1.08のUbuntu用を使うのが安全なのか?

展開。

sudo tar -xzvf greengrass-linux-aarch64-1.10.0.tar.gz -C /
sudo tar -xzvf {ハッシュ値}-setup.tar.gz -C /greengrass

ルート証明書をダウンロード。

sudo wget -O /greengrass/certs/root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
#確認
cat /greengrass/certs/root.ca.pem

ここまでで起動するという情報もありますが、ワタシの環境では起動しませんでした。

configを確認するといろいろ足りてなかったので記載しました。

vimでconfigを編集

sudo vim /greengrass/config/config.json

内容は以下のようになります。

{
    "coreThing": {
        "caPath": "root.ca.pem",
        "certPath": "{ハッシュ値}.cert.pem",
        "keyPath": "{ハッシュ値}.private.key",
        "thingArn": "arn:aws:iot:ap-northeast-1:xxxxxxxxxxxx:thing/jetson-nano-01-core",
        "iotHost": "xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com",
        "ggHost": "greengrass-ats.iot.ap-northeast-1.amazonaws.com"
    },
    "runtime": {
        "cgroup": {
            "useSystemd": "yes"
        }
    },
    "managedRespawn": false,
    "crypto": {
        "caPath" : "file:///greengrass/certs/root.ca.pem",
        "principals": {
            "IoTCertificate": {
                "privateKeyPath": "file:///greengrass/certs/{ハッシュ値}.private.key",
                "certificatePath": "file:///greengrass/certs/{ハッシュ値}.cert.pem"
            },
            "SecretsManager": {
                "privateKeyPath": "file:///greengrass/certs/{ハッシュ値}.private.key"
            }
        }
    }
}

configを編集すると起動するようになりました。

sudo /greengrass/ggc/core/greengrassd start

プロセスがあるか確認。

ps aux | grep {PID}

6. まとめ

いかがでしたでしょうか。ドキュメントにすべて書かれているので簡単です。

次回はLambdaのデプロイもやってみたいと思います。