R-Car/Boards/Yocto-Gen3/AWS IoT Greengrass/v5.5.0

はじめに
このページは、 R-Car にて AWS GreenGlass を使用するための、Yocto環境の構築および実行手順を記載している.

環境

 * ホストPC
 * Windows10 (64bit)
 * ビルドPC
 * 確認済みボード

ビルド手順

 * 1) 事前準備(パッケージのインストール)
 * 2) gitの設定
 * 3) ビルドスクリプトを任意のディレクトリに作成
 * ※ビルドスクリプトはボードにCCPFが付いている場合とついていない場合で違うため、注意すること
 * H3SK / M3SK の場合の build.sh
 * CCPF+H3SK / CCPF+M3SK の場合の build.sh
 * 1) ビルドスクリプトを実行
 * ※ 
 * R-Car Starter Kit Premier (H3) : "h3ulcb"
 * R-Car Starter Kit Pro (M3)    : "m3ulcb"
 * 1) local.conf の修正
 * 以下を実行して、イメージに「python3-pip」のパッケージが含まれるようにコンフィグファイルを修正します.
 * 1) ビルド実行
 * イメージのビルドは、ホストシステムの性能によっては数時間かかることがある.
 * ビルドが正常に完了すると、以下のような出力が表示される.
 * 1) ビルド生成物
 * bitbake を実行して生成されたファイルは以下に格納される
 * /build/tmp/deploy/images//
 * 1) イメージを SD カードに書き込む
 * SDカードにイメージを書き込む方法は、Loading kernel and rootfs via eMMC/SD cardを参照.
 * ※上記の例はイメージが"weston"のため、"minimal"に置き換えることに注意すること
 * ビルドが正常に完了すると、以下のような出力が表示される.
 * 1) ビルド生成物
 * bitbake を実行して生成されたファイルは以下に格納される
 * /build/tmp/deploy/images//
 * 1) イメージを SD カードに書き込む
 * SDカードにイメージを書き込む方法は、Loading kernel and rootfs via eMMC/SD cardを参照.
 * ※上記の例はイメージが"weston"のため、"minimal"に置き換えることに注意すること
 * ※上記の例はイメージが"weston"のため、"minimal"に置き換えることに注意すること

ターゲットボード Greengrass Core の起動確認

 * 1) R-Car SK の起動
 * R-Car SK に uSD カードを挿入して、LANケーブルを接続する.
 * USB デバッグシリアルケーブルを PC と接続して、AC 電源を投入する.
 * PC 側では、ターミナルソフトを起動して、シリアル接続を行う.
 * 電源 ON は POWER SW(SW8) を押下する.
 * 1) SD ブートを U-Boot で設定
 * SDブートの設定方法は、Configure U-Boot to boot from SD cardを参照.
 * 1) Greengrass Core の起動確認
 * Greengrass Core が Active となっていることを確認する.
 * Aws-status.png
 * Aws-status.png

AWS IoT Greengrass の設定/動作確認
以降の章では、以下のようなルールでタイトルにタグを記載する.
 * ターゲットボード(R-Car SK)での作業は、<端末>と記載する.
 * ホスト PC での AWS クラウドの作業は、と記載する.
 * ビルドPCでの作業は、<ビルドPC>と記載する.
 * 1)  AWSアカウントを作成
 * https://console.aws.amazon.com/console/home
 * AWS のアカウントを作成して、AWS マネジメントコンソールにルートユーザでログインする.
 * 1)  IAM ユーザの作成
 * 下記を参考に作業用のIAM ユーザを作成する.
 * https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_create.html#id_users_create_console
 * 作成時に以下のポリシーをアタッチしておくこと.
 * AWSLambda_FullAccess
 * IAMFullAccess
 * AWSIoTFullAccess
 * AWSGreengrassFullAccess
 * IAMAccessAnalyzerFullAccess
 * ユーザアクセス時に表示される、「アクセスキーID」、「シークレットアクセスキー」、「パスワード」を必ずメモすること. なお、シークレットアクセスキーとパスワードは、このタイミングでしか確認できないため、注意すること.
 * これら3点は、セキュリティ上、非常に重要な情報であるため、管理に十分注意すること. 
 * AWS のルートユーザをサインアウトして、作成した IAM ユーザでログインする.
 * https://console.aws.amazon.com/console/home
 * 1)  リージョンの設定
 * 画面右上から「アジアパシフィック (東京)　ap-northeast-1」を設定する.
 * Aws-region.png
 * 1) <端末> IoT Core デバイスの作成
 * 事前に「ターゲットボード Greengrass Core の起動確認」を行い、端末はLANケーブルを接続してインターネットに接続できることを確認しておくこと.
 * 1)  AWS のサービスから「IoT Core」を選択する.
 * Aws-iot-core.png
 * 1)  左側面の領域から「Greengrass」→「使用を開始する」を選択する.
 * 2)  「1つの Core デバイスをセットアップ」を押下する.
 * 3) <端末> 画面の指示に従い以下の作業を実施する.
 * 4)  「ステップ 1: Greengrass コアデバイスを登録する」
 * 任意の名称を入力する.
 * 本手順では、コアデバイス名を "R-CarH3SKDevice" とする.
 * 1)  「ステップ 2: モノのグループに追加して継続的なデプロイを適用する」
 * 「新しいグループ名を入力」をチェックして、任意の名称を入力する.
 * 本手順では、モノのグループ名を "R-CarH3SKDeviceGroup"とする.
 * 1) <端末> 「ステップ 3: Greengrass コアソフトウェアをインストール」
 * 2) 「ステップ 3.1: Java をデバイスにインストールする」
 * R-Car SK のビルドで生成したイメージに含まれているため、作業不要.
 * 1) 「ステップ 3.2: デバイスで AWS 認証情報を設定する」
 * 以下のコマンドを実行し、 AWS へアクセスする情報を環境変数として設定する.
 * 1) 「ステップ 3.3: インストーラを実行する」
 * 「インストーラのダウンロード」は作業不要.
 * 「インストーラの実行」は、Web ブラウザに表示されているものでは、Path が合わないため、端末にて、以下のコマンドを実行する.
 * 「R-CarH3SKDevice」と「R-CarH3SKDeviceGroup」部分は「ステップ 1」と「ステップ 2」で設定した値に置き替えること.
 * 上記コマンドを実行すると、R-Car SK 端末が AWS IoT と通信して Greengrass コアデバイスとして登録される.
 * コマンドが終了して、しばらくすると Greengrass CLI が端末へデプロイされるため、以下のコマンドが実行できるか確認する.
 * デプロイの状況は、以下のログで確認できる.
 * 1) <Web> IoT Core に送信するポリシーを追加
 * 端末で動作する Lambda 関数が AWS クラウドの IoT Core に対して メッセージを Publish するためにポリシーを追加する.
 * 1) AWS のサービスから「IAM」を選択する.
 * 2) サイドメニューから「ポリシー」を選択する.
 * 3) 「ポリシーを作成」を選択する.
 * 4) サービスに「IoT」を選択、アクションに「Publish」を選択、リソースに「すべてのリソース」を選択する.
 * Aws-iot-core-policy.png
 * 1) 「次のステップ：タグ」、「次のステップ：確認」を押下していき、ポリシーの確認で任意の「名前」を入力し、「ポリシーの作成」ボタンを押下する.
 * 本手順では、名前を「R-CarH3SKDevice-IoT-Publish」とする.
 * 1) IAM の画面に戻るので、サイドメニューから「ロール」を選択する.
 * 2) 検索に「GreengrassV2TokenExchangeRole」を入力して、同名のロールを選択する.
 * 3) 「ポリシーをアタッチします」を押下して、先ほど作成したポリシーを検索して「ポリシーのアタッチ」を押下する.
 * 本手順では、名前を「R-CarH3SKDevice-IoT-Publish」とする.
 * 1) IAM の画面に戻るので、サイドメニューから「ロール」を選択する.
 * 2) 検索に「GreengrassV2TokenExchangeRole」を入力して、同名のロールを選択する.
 * 3) 「ポリシーをアタッチします」を押下して、先ほど作成したポリシーを検索して「ポリシーのアタッチ」を押下する.