catch-img

CONEXIOBlackBearでAWS IoT Greengrass V2を使ってみる(1) Greengrass Coreソフトウェアのセットアップ


目次[非表示]

  1. はじめに
  2. 実施環境
  3. 1. 準備
    1. 1.1 ユーザー/グループの作成
    2. 1.2 AWS CLIのインストール
    3. 1.3 jdkのインストール
  4. 2. AWS IoT GreengrassCoreソフトウェアのインストール
    1. 2.1 ダウンロード
    2. 2.2 クレデンシャルの設定
    3. 2.3 インストール
  5. 3. 起動確認
  6. まとめ

はじめに

こんにちは。コネクシオIoTブログ 技術記事担当のHです。

以前、CONEXIOBlackBearにおけるAWS IoT Greengrassの活用例として、AWS Lambdaで作成したプログラムやSageMakerで作成した機械学習モデルをCONEXIOBlackBear内にデプロイしたりする記事を掲載しました。

現在、AWS IoT GreengrassはV2に移行し、以前と使い勝手が少し変わったため、今回改めてV2においてセットアップ~プログラム動作確認までの手順を整理したいと思います。

今回は、セットアップを行います。


実施環境

  • CONEXIOBlackBear
    • OSバージョン V1.1.9
    • Python3.7
    • シリアルコンソールを使用
    • ユーザー: root
    • aptリポジトリ設定済み(CONEXIOBlackBear_簡易プログラミングマニュアルを参照)
  • AWS
    • リージョン: us-west-2
    • Administoratorユーザーが使用可能


1. 準備

AWS IoT Greengrass Core ソフトウェアV2をCONEXIOBlackBearにインストールするには、事前に以下が必要ですのでそれぞれの手順を実行します。

  • ユーザーの作成
  • AWS CLIのインストール
  • openjdkのインストール

1.1 ユーザー/グループの作成

CONEXIOBlackBearのシリアルコンソールにて、ユーザーとグループを作成します。

adduser --system ggc_user
addgroup --system ggc_group

1.2 AWS CLIのインストール

https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html

上記リンク内の前提条件より、32ビットARMでは、1系が必要ですので、

https://docs.aws.amazon.com/cli/latest/userguide/install-linux.html

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


1.3 jdkのインストール

jdkは、CONEXIOBlackBearのaptリポジトリにあるopenjdk-8を利用します。

apt-get update
apt-get install openjdk-8

次に、jdkの設定を行います。以下のコマンドを実行してください。

apt-get install ca-certificates-java
mv /usr/lib/jvm/openjdk-8/jre/lib/security/cacerts /usr/lib/jvm/openjdk-8/jre/lib/security/cacerts.bak
ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/openjdk-8/jre/lib/security/cacerts

この手順を行わないと、後述のAWS IoT Greengrass Coreソフトウェアのインストールにおいて、以下のようなエラーが出て失敗してしまいます。また、AWS IoT Greengrass Coreソフトウェア実行後もエラーが発生し動作しません。

Error while trying to setup Greengrass Nucleus
software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
:
省略



2. AWS IoT GreengrassCoreソフトウェアのインストール

ここでの手順は、以下のAWSのドキュメントに載っている手順のうち、

自動リソースプロビジョニングを使用してAWSIoT GreengrassCoreソフトウェアをインストールします

という方法に従います。詳細は、以下のURLです。

https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html


2.1 ダウンロード

以下のコマンドを実行し、ダウンロード&解凍します。

curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
mkdir -p ./GreengrassInstaller
unzip greengrass-nucleus-latest.zip -d GreengrassInstaller


2.2 クレデンシャルの設定

次に、CONEXIOBlackBearを離れてAWSコンソールで、

  • IAMポリシーを作成
  • IAMユーザーを作成し、作成したポリシーを割り当て、クレデンシャル情報をダウンロードする

の2手順を行います。IAMポリシーは、

https://docs.aws.amazon.com/greengrass/v2/developerguide/provision-minimal-iam-policy.html

に従います。

IAMポリシー、IAMユーザーが作成出来たら、CONEXIOBlackBearのシリアルコンソールに戻って、IAMユーザーの​​​​アクセスキーIDとシークレットアクセスキーを以下のように設定します。

export AWS_ACCESS_KEY_ID=*****************
export AWS_SECRET_ACCESS_KEY=*****************


2.3 インストール

以下のコマンドで、インストールを行います。引数は、基本的に

https://docs.aws.amazon.com/greengrass/v2/developerguide/quick-installation.html

に従っておりますが、1.3 jdkの設定に関連して、

  • -Djavax.net.ssl.trustStore=/usr/lib/jvm/openjdk-8/jre/lib/security/cacerts
  • -Djavax.net.ssl.trustStorePassword=changeit

の2つを追加する必要があります。

sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE -Djavax.net.ssl.trustStore=/usr/lib/jvm/openjdk-8/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit -jar ./GreengrassInstaller/lib/Greengrass.jar   --aws-region us-west-2   --thing-name MyGreengrassCore   --thing-group-name MyGreengrassCoreGroup   --thing-policy-name GreengrassV2IoTThingPolicy   --tes-role-name GreengrassV2TokenExchangeRole   --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias   --component-default-user ggc_user:ggc_group   --provision true   --setup-system-service true   --deploy-dev-tools true

以下のような表示が出れば、完了です。

:
Successfully set up Nucleus as a system service


3. 起動確認

最後に、Greengrass Core ソフトウェアが起動しているか確認しておきます。

root@imx6qsabresd:~# systemctl status greengrass.service
● greengrass.service - Greengrass Core
   Loaded: loaded (/etc/systemd/system/greengrass.service; enabled; vendor prese
   Active: active (running) since Wed 2021-10-13 12:09:40 UTC; 29min ago
 Main PID: 24713 (sh)
    Tasks: 32 (limit: 4915)
   CGroup: /system.slice/greengrass.service
           tq24713 /bin/sh /greengrass/v2/alts/current/distro/bin/loader
           mq24720 java -Dlog.store=FILE -Dlog.store=FILE -Droot=/greengrass/v2

Oct 13 12:09:40 imx6qsabresd sh[24713]: JVM options: -Dlog.store=FILE -Droot=/gr
Oct 13 12:09:40 imx6qsabresd sh[24713]: Nucleus options: --setup-system-service
Oct 13 12:09:47 imx6qsabresd sh[24713]: SLF4J: Failed to load class "org.slf4j.i
Oct 13 12:09:47 imx6qsabresd sh[24713]: SLF4J: Defaulting to no-operation MDCAda
Oct 13 12:09:47 imx6qsabresd sh[24713]: SLF4J: See http://www.slf4j.org/codes.ht
Oct 13 12:09:51 imx6qsabresd sh[24713]: Launching Nucleus...
Oct 13 12:09:52 imx6qsabresd sh[24713]: AWS libcrypto resolve: searching process
Oct 13 12:09:52 imx6qsabresd sh[24713]: AWS libcrypto resolve: found static aws-
Oct 13 12:09:52 imx6qsabresd sh[24713]: AWS libcrypto resolve: found static aws-
Oct 13 12:10:12 imx6qsabresd sh[24713]: Launched Nucleus successfully.

また、AWS IoTコンソール上でも、インストールの過程で作成されたコアデバイスを確認することができます。


まとめ

以上のように、AWS IoT Greengrass Core ソフトウェア V2をCONEXIOBlackBearにインストールできました。次回は、簡単なサンプルプログラムを動作させてみたいと思います。

▼続きの記事はこちら
CONEXIOBlackBearでAWS IoT Greengrass V2を使ってみる(2)

本記事は担当書き手の個人的感想を述べるもので、コネクシオ株式会社を代表する意思表示をするものでは有りません。

5分でわかる!
Smart Ready IoTソリューションセットまるわかり大全
ご質問やご要望はこちらから
お気軽にお問い合わせください

閉じる