====== AWS IoT Greengrass V2 対応 ======
\\
[[https://aws.amazon.com/jp/greengrass/?nc2=h_ql_prod_it_gg|{{https://d1tlzifd8jdoy4.cloudfront.net/wp-content/uploads/2019/05/aws-iot-greengrass-960x504.png?400|AWS IoT Greengrass}}]]
\\
AWS IoT Greengrass V2 のインストーラを使用して、Greengrass V2 のセットアップを行います。\\
詳細は [[https://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/setting-up.html|AWS IoT Greengrass コアデバイスをセットアップする - docs.aws.amazon.com]] などを参照してください。
===== 準備 =====
AWS IoT Greengrass コアデバイスをセットアップするためには下記が必要です。\\
* MA シリーズがインターネットへ接続できる環境\\
* AWS の IAM ポリシー設定、AWS 認証情報(ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)
* Java ランタイム環境 (JRE) バージョン 8 以降\\
\\
===== JDK(JRE) をインストールしたファームウェアの作成 =====
AWS IoT Greengrass Core ソフトウェアを入れたファームウェアを作成するとデバイス毎の設定ができなくなることとファームウェアのサイズが大きくなりすぎるため、\\
ここではソフトウェア開発 (MA-X3xx シリーズ)の基本編(ファームウェア作成)を参考に JDK(JRE) を追加したファームウェアを作成します。\\
※ JDK(JRE) をインストールしたファームウェアの作成については、[[max3xx_devel:customize_firmware:add_openjdk_jre:start|]] を参照してください。\\
\\
===== ファームウェアの更新 =====
作成したファームウェアをデバイスに適用します。
\\
===== eMMC 後半領域の利用 =====
AWS IoT Greengrass Core ソフトウェアは、eMMC の後半領域に入れます。\\
eMMC の後半領域を利用する手順については、[[mas1xx_tips:use_emmc_data_partition:start|]] を参照してください。\\
\\
===== AWS IoT Greengrass のセットアップ =====
==== AWS IoT のコンソール へ移動 ====
AWS IoT のコンソール に移動します。
\\
==== Core デバイスのセットアップ ====
左メニューから **Greeengrass デバイス** を選択し、 **1つの Core デバイスをセットアップ** をクリックします。\\
{{:max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:gg_1.jpg?1000|}}
\\
==== コアデバイスとモノのグループの命名 ====
コアデバイスとモノのグループに名前をつけます。
{{:max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:gg2.jpg?1000|}}
\\
==== AWS 認証情報の設定 ====
AWS 認証情報をデバイスのターミナルにコピーしてデバイスへ貼り付けます。
{{:max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:gg_3.jpg?1000|}}
\\
デバイスで AWS 認証情報を設定します。
root@gemini:~# export AWS_ACCESS_KEY_ID=アクセスキー
root@gemini:~# export AWS_SECRET_ACCESS_KEY=シークレットアクセスキー
root@gemini:~# export AWS_SESSION_TOKEN=セッション トークンキー
root@gemini:~#
\\
==== インストーラのダウンロード と インストールの実行 ====
Web ページからそれぞれのコマンドをコピーし、ターミナルに貼り付けて実行します。
{{:max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:gg_4.jpg?1000|}}
\\
=== インストーラのダウンロード ===
root@gemini:/opt/data# curl -s https://XXXXXXXXXX.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip && unzip greengrass-nucleus-latest.zip -d GreengrassInstaller
Archive: greengrass-nucleus-latest.zip
inflating: GreengrassInstaller/META-INF/MANIFEST.MF
inflating: GreengrassInstaller/META-INF/SIGNER.SF
inflating: GreengrassInstaller/META-INF/SIGNER.RSA
inflating: GreengrassInstaller/LICENSE
inflating: GreengrassInstaller/NOTICE
inflating: GreengrassInstaller/README.md
inflating: GreengrassInstaller/THIRD-PARTY-LICENSES
inflating: GreengrassInstaller/bin/greengrass.exe
inflating: GreengrassInstaller/bin/greengrass.service.procd.template
inflating: GreengrassInstaller/bin/greengrass.service.template
inflating: GreengrassInstaller/bin/greengrass.xml.template
inflating: GreengrassInstaller/bin/loader
inflating: GreengrassInstaller/bin/loader.cmd
inflating: GreengrassInstaller/conf/recipe.yaml
inflating: GreengrassInstaller/lib/Greengrass.jar
root@gemini:/opt/data#
\\
=== インストールの実行 ===
root@gemini:/opt/data# sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE -jar ./GreengrassInstaller/lib/Greengrass.jar --aws-region ap-northeast-1 --thing-name GG-device1 --thing-group-name GG-Group --component-default-user ggc_user:ggc_group --provision true --setup-system-service true --deploy-dev-tools true
Provisioning AWS IoT resources for the device with IoT Thing Name: [GG-device1]...
Found IoT policy "GreengrassV2IoTThingPolicy", reusing it
Creating keys and certificate...
Attaching policy to certificate...
Creating IoT Thing "GG-device1"...
Attaching certificate to IoT thing...
Successfully provisioned AWS IoT resources for the device with IoT Thing Name: [GG-device1]!
Adding IoT Thing [GG-device1] into Thing Group: [GG-Group]...
Successfully added Thing into Thing Group: [GG-Group]
Setting up resources for aws.greengrass.TokenExchangeService ...
Attaching TES role policy to IoT thing...
No managed IAM policy found, looking for user defined policy...
IAM policy named "GreengrassV2TokenExchangeRoleAccess" already exists. Please attach it to the IAM role if not already
Configuring Nucleus with provisioned resource details...
Downloading Root CA from "https://www.amazontrust.com/repository/AmazonRootCA1.pem"
Created device configuration
Successfully configured Nucleus with provisioned resource details!
Creating a deployment for Greengrass first party components to the thing group
Configured Nucleus to deploy aws.greengrass.Cli component
Creating user ggc_user
ggc_user created
Creating group ggc_group
ggc_group created
Added ggc_user to ggc_group
Successfully set up Nucleus as a system service
root@gemini:/opt/data#
\\
==== コアデバイスの状態の確認 ====
コアデバイスを表示 をクリックします。
{{:max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:gg_5.jpg?1000|}}
\\
追加したコアデバイスが正常になっていることを確認します。
{{:max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:gg_6.jpg?1000|}}
\\
===== AWS IoT Greengrass のステータス確認 =====
Greengrass CLI コマンドを実行し、バージョンが表示されることを確認します。
root@gemini:/opt/data# /greengrass/v2/bin/greengrass-cli -V
Greengrass CLI Version: 2.10.0
root@gemini:/opt/data#
\\
サービスの状態を確認するには以下のコマンドを実行します。
root@gemini:/opt/data# systemctl status greengrass.service
● greengrass.service - Greengrass Core
Loaded: loaded (/etc/systemd/system/greengrass.service; enabled; vendor pr>
Active: active (running) since Wed 2023-05-10 12:17:48 JST; 1h 8min ago
Main PID: 906 (sh)
Tasks: 35 (limit: 1186)
Memory: 165.8M
CGroup: /system.slice/greengrass.service
tq906 /bin/sh /greengrass/v2/alts/current/distro/bin/loader
mq914 java -Dlog.store=FILE -Dlog.store=FILE -Droot=/greengrass/v2>
May 10 12:17:48 gemini systemd[1]: Started Greengrass Core.
May 10 12:17:48 gemini sh[906]: Greengrass root: /greengrass/v2
May 10 12:17:49 gemini sh[906]: Java executable: java
May 10 12:17:49 gemini sh[906]: JVM options: -Dlog.store=FILE -Droot=/greengras>
May 10 12:17:49 gemini sh[906]: Nucleus options: --setup-system-service false
May 10 12:18:35 gemini sh[914]: Launching Nucleus...
May 10 12:18:52 gemini sh[914]: Launched Nucleus successfully.
\\
===== Documents =====
=== Getting Started Guide for AWS IoT Greengrass ===
^ File ^ Status ^ Note |
|{{:max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:getting_started_guide_template_for_aws_iot_greengrass_devices_ma-s1xx.docx |}}|2023/07/05 14:23 41.1 KB|for MA-S1xx Series|
|{{ :max3xx_devel:customize_firmware:add_aws_iot_greengrass_v2:getting_started_guide_template_for_aws_iot_greengrass_devices_ma-x3xx.docx |}}|2023/07/05 14:25 41.1 KB|for MA-X3xx Series|
\\