Amazon Web Services ブログ
AWS IoT GreengrassがWindowsに対応
はじめに
Microsoft Windowsは、産業オートメーションで使用されるデバイスの一般的なオペレーティングシステムです。AWS IoT Greengrassを利用するお客様は、これまでLinuxベースのデバイスに限られていました。GreengrassのWindows対応により、AWS IoT GreengrassをWindowsベースのデバイスで活用し、データをローカルに収集してAWS IoTやその他のサービスにプッシュすることができるようになります。このブログでは、WindowsにAWS IoT Greengrassをインストールして使用する方法を紹介します。
読むのにかかる時間 | 15分 |
完了までの時間 | 30分 |
学習レベル | 200 |
使用サービス | AWS IoT Greengrass, AWS Identity and Access Management, Amazon S3 |
完了までのコスト(目安) | 1ドル |
チュートリアル
AWS IoT Greengrass for Windowsは、クイックインストール方式を使用してインストールできます。これはGreengrassデバイス上で実行され、関連するデバイスとAWSサービスをプロビジョニングする自動化されたプロセスです。または、AWS IoTへの接続に必要な証明書が事前にプロビジョニングされたデバイスを、後日デプロイすることもできます。このブログでは、AWSコンソールを介したクイックインストールの方法を使って、1台のデバイスをセットアップします。以下の例では、Microsoft Windows 10 Enterpriseを使用しています。
以下のステップで実行していきます。
- AWS IoT Greengrass スタートガイドに移動する
- デバイスにJavaをインストールする
- デバイスをプロビジョニングする権限を持つAWS IAMユーザーを作成する
- AWS Command Line Interface(CLI)のバージョン2をデバイスにインストールする
- AWS IoT Greengrassを実行するWindowsマシンにローカルユーザーを作成する
- AWS IoT Greengrassのインストーラーをダウンロードして実行する
- AWS IoT Greengrassがインストールされ、実行されていることを確認する
- 最初のAWS IoT Greengrassコンポーネントを作成し、デプロイする
前提条件
- AWSアカウントを用意してください。お持ちでない場合は、開発者ガイドの AWSアカウントの設定 の手順に従って準備してください。
- AWSリージョンを選択します。このブログではeu-west-1, Irelandを選択しました。AWS IoT Greengrass v2のサポートするリージョンの一覧は、AWS General ReferenceのAWS IoT Greengrass V2 endpoints and quotasを参照してください。
- ユーザーを作成・編集する管理者権限を持つAWS Identity and Access Management(IAM)ユーザーを準備してください。
- インターネットに接続されたWindows、macOS、またはUnix系の開発用コンピューターを使用します。
- AWS IoT Greengrass Core software v2.0をインストールして実行するための条件を満たし、AWSクラウドサービスにアクセスするためのインターネット接続が可能なデバイスを準備ください。
ステップ1. AWS IoT Greengrass スタートアップガイドを開く
- AWS IoT Coreのコンソールに移動します
- メニューのGreengrass を展開します
- 使用を開始する を選択します
- 1つのCoreデバイスをセットアップ を選択します
- Greengrass コアソフトウェアをインストール セクションで Windows を選択します
- このブログでは、以降でWindows端末でAWS IoT Greengrassをインストールする手順をご紹介していきます
ステップ2. 端末にJavaをインストールする
まず最初に、Javaをインストールするか、デバイスにJavaがインストールされているかを確認します。NucleusなどのAWS IoT Greengrassのコンポーネントは、プラットフォーム間の移植性を高めるためにJavaで記述されているため、最低でもJavaバージョン8が必要です。
以下の手順でJavaがインストールされているかどうかを確認します。
- コマンドプロンプトを開く(Windowsの検索バーに コマンドプロンプトと入力します)
java -version
と入力します
Javaがインストールされている場合は、出力にバージョンが表示されます。
Javaがインストールされていない場合は、次のようなメッセージが表示されます: ‘java’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。
OpenJavaまたはCorrettoは、Corretto 11ユーザーガイドからダウンロードしてインストールできます。Javaをインストールした後、マシンを再起動する必要があるかもしれません。
ステップ3. デバイスをプロビジョニングする権限を持つAWS IAMユーザーを作成する
次のステップでは、AWSの認証情報の設定をします。デバイス上には、AWS IoT Greengrassデバイスの作成とプロビジョニングの権限を持つAWS IAMユーザーのクレデンシャルを設定する必要があります。これは、クイックスタートの方法に従ってインストールする場合にのみ必要です。本番環境や多数のデバイスがある場合は、このプロセスを自動化することを検討します。
- AWSコンソールを開き、IAMコンソールに移動します
- ユーザー を選択します
- ユーザーを追加 を選択します
- ユーザー名に GGv2ProvisionUser と入力します
- このIAMユーザーはCLIでしか使わないので、 アクセスキー – プログラムによるアクセス を選択します
- 次のステップ: アクセス権限 を選択し移動します
- 既存のポリシーを直接アタッチ を選択します
- IAMFullAccess を検索して選択します。これは、新しいAWS IoT Greengrassのユーザーアカウントとロールの作成に使用します
- AWSIoTFullAccess を検索して選択します。これは、デバイスの作成に使用されます
- AWSGreengrassFullAccess を検索して選択します。これは、AWS IoT Greengrassサービスを更新するために使用されます
- 次のステップ: タグ を選択し移動します
- 次のステップ: 確認 を選択し移動します
- ユーザーの作成 を選択します。
- .csvのダウンロード ボタンをクリックして、ログイン認証のアクセスキーとシークレットアクセスキーを保存します
- 閉じる を選択します
ステップ4. AWS Command Line Interface(CLI)のバージョン2をデバイスにインストールする
次に、ステップ3で作成したユーザーでAWS CLIの設定を行います。
- デバイスにAWS CLIをインストールします。AWS Command Line Interface ユーザーガイドの Getting started with the AWS CLI に従いインストールします。インストールしたら、マシンを再起動する必要があります
- コマンドプロンプトを開きます(Windowsの検索バーに コマンドプロンプト と入力)
- コマンドプロンプトのウィンドウに aws configure と入力し、Enterキーを押します
- ステップ3で生成した AWS Access Key ID を入力します
- ステップ3で生成した AWS Secret Access key を入力します
- デフォルトのリージョン名を入力します。私の場合はアイルランドを使用しているので、eu-west-1 となります
- デフォルトの出力形式である json を入力します
ステップ5. AWS IoT Greengrassを実行するWindowsマシンに、ローカルユーザーを作成する
次に、AWS IoT Greengrassデバイスが使用するローカルユーザーを作成します。そのためには、psexec.exeをインストールする必要があります。
- MicrosoftのPsExecユーティリティをダウンロードし、zipファイルを解凍します
- psexec.exeをC:\Windows\System32にコピーします
- 管理者としてコマンドプロンプトを開きます(Windowsの検索バーに コマンドプロンプト と入力し、マウスで右クリックしメニューから 管理者として実行 を選択します)
- UACポップアップが表示されたらYesを選択します
- 次のコマンドを実行して、新しいユーザーを作成します。<password>を安全なパスワードに置き換えてください
net user /add ggc_user <password>
- ここで、以下のコマンドを実行して、AWS IoT Greengrassがアクセスできるように、システムアカウントにパスワードを保存します。<password>は、前のステップで使用したパスワードに置き換えてください
cd C:\Windows\System32
psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:<password>
ステップ6. AWS IoT Greengrassのインストーラーをダウンロードして実行する
ここからは、スタートガイドを使って、1つのコアデバイスをセットアップする方法を紹介します。
- AWSコンソールにログインし、AWS IoT Core に移動します
- Greengrassを展開し、 使用を開始する を選択します
- 1つのCoreデバイスをセットアップ を選択します
- コアデバイス名とモノのグループは、デフォルトのままでも構いません
- ステップ 3: Greengrassコアソフトウェアをインストール では、Windows を選択します
- .zipをダウンロード を選択します
- AWS IoT Greengrass v2 のファイルを解凍します
- コマンドプロンプトを管理者として開きます。(Windowsの検索バーに コマンドプロンプト と入力し、管理者として実行 を選択します)
- ファイルを解凍したフォルダに移動します(私の場合は以下のようになっています)
D:\Users\paulshiner\Desktop\gg>
- コンソールに表示されている インストーラを実行 (※)のコマンドを実行します。AWS IoTリソースのプロビジョニング、ThingのThing Groupへの追加、Nucleusの設定、Nucleusのシステムとしてのセットアップが成功した旨のメッセージが出力されますので確認してください
※ コンソールに表示されたコマンドはダウンロードファイルをGreengrassCoreというディレクトリに解凍していることを前提としています。
- インストールが完了すると、次のステップに進むことができます
ステップ7. AWS IoT Greengrassがインストールされ、実行されていることを確認する
AWSコンソールにデバイスが表示されていることを確認します。
- AWS IoT Core のコンソールに移動します
- Greengrass を展開します
- コアデバイス を選択します
- ステップ6で作成したデバイスが Greengrassコアデバイス の下に表示されます
- AWS IoT Greengrassがシステムサービスとしてインストールされ、実行されていることを、サービス を開いて確認します(Windowsの検索バーにサービスと入力)
- サービスリストの greengrass を確認し、ステータスが 実行中 であることを確認します。そうでない場合は、ステップ6のインストール手順を繰り返し、エラーがないか確認します。デベロッパーガイドのTroubleshooting AWS IoT Greengrass V2もご確認ください
ステップ8. 最初のAWS IoT Greengrassコンポーネントの作成と展開
このステップでは、デバイスにデプロイするためのシンプルなバッチファイルを作成します。このバッチファイルは、現在のOSバージョンをテキストファイルに記録します。このバッチファイルをアップロードし、リモートで取得し実行します。ここでは、AWS IoT Greengrassが実行できる最も単純なコンポーネント例として、バッチファイルを選択しました。サードパーティのシステムからデータを取得するために、実行ファイルやPythonコードを実行することもできます。
- 以下の内容で software.bat というファイルを作成します
@ECHO OFF chcp 437 >hardware.txt ( :: This batch file will discover the windows version we are using and store to a text file TITLE My System Info ECHO ========================== ECHO WINDOWS INFO ECHO ============================ systeminfo | findstr /c:"OS Name" systeminfo | findstr /c:"OS Version" systeminfo | findstr /c:"System Type" )
- このファイルをAmazon S3に、バージョン管理に使えるフォルダ構造で保存します
- Amazon S3 コンソール に移動します
- バケットを作成 を選択します
- バケットにグローバルにユニークな名前(greengrasscomponents + 作成日時などのランダムな文字列)を付けます
- AWS IoT Greengrassデバイスがインストールされたリージョンを選択します
- バケットを作成 を選択します
- 前の画面に戻ったら、先ほど作成したバケット名を選択します
- フォルダの作成 を選択します
- フォルダ名には artifacts と入力します
- そのフォルダ内に移動して、 com.example.software という名前の別のフォルダを作成します
- このフォルダに移動して、 1.0.0 という名前のフォルダを作成します。このフォルダには、最初のバージョンのコードが格納されます
- これで、 greengrasscomponents_<unique name>/artifacts/com.example.software/1.0.0/ のようなフォルダ構造になります
- 1.0.0フォルダに移動し アップロード を選択し、先ほど作成した software.bat ファイルをアップロードします
- このフォルダの中にある software.bat のリンクを選択します
- S3 URI を選択して、そのリンクをコピーします。このリンクはレシピファイルで必要になります
コンポーネントのデプロイを試みる前に、AWS IoT GreengrassロールがAmazon S3バケットからファイルを読み取るためのアクセス権を持っていることを確認する必要があります。
- AWS IoT Coreのコンソールに移動します
- 安全性 を選択します
- ロールエイリアス を選択します
- AWS IoT Greengrassのインストーラープロセスで作成されたロールエイリアスが一覧表示されます
- ロールエイリアスを選択します
- IAMロールの編集 を選択します
- このリンクをクリックすると、そのロールのIAMコンソールが開きます
- アクセス権限 タブを開き、 GreengrassV2TokenExchangeRoleAccess ポリシーを選択します。リストを展開する必要があるかもしれません
- ポリシーの編集 を選択します
- さらにアクセス許可を追加する を選択します
- サービスの選択 を展開して S3 を検索し、サービスAmazon S3を選択します
- 次に アクセスレベル 見出しの下にある 読み込み セクションを展開し、次のチェックボックス GetObject と GetBucketLocation を選択します
- 矢印で リソース セクションを展開します
- bucket の横にある ARNの追加 を選択します。バケット名を入力するウィンドウが表示されます。私の場合はgreengrasscomponents_<unique name>です
- 追加を選択します
- objectの隣にあるARNの追加を選択します。バケット名とオブジェクト名を入力するウィンドウが表示されます。バケット名を入力します(私の場合は、greengrasscomponents_<unique name>)
- オブジェクト名の入力ボックスの隣にある すべて を選択すると、このバケット内のすべてのオブジェクトをポリシーで取得できるようになります
- ポリシーの確認 を選択します
- 変更の保存 を選択します
これで、WindowsにインストールしたAWS IoT Greengrassデバイスに最初のコンポーネントをデプロイして実行する準備ができました。
- AWS IoT Coreのコンソールに移動します
- Greengrass を展開し コンポーネント を選択します
- コンポーネントを作成 を選択します
- 以下のレシピを入力します
<bucket_name>をステップ8で決めた名前に置き換えてください。{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.software", "ComponentVersion": "1.0.0", "ComponentDescription": "My batch file", "ComponentPublisher": "Me", "ComponentConfiguration": { "DefaultConfiguration": { } }, "Manifests": [ { "Name": "windows", "Platform": { "os": "windows" }, "Lifecycle": { "Run": "{artifacts:path}/software.bat" }, "Artifacts": [ { "Uri": "s3://<bucket_name>/artifacts/com.example.software/1.0.0/software.bat" } ] } ] }
- コンポーネントを作成 を選択します
- デプロイ を選択します
- Windowsデバイス用のデプロイメントグループを選択します
- デプロイボタンをクリックします。デプロイ画面に戻り、IoTジョブを選択すると、デプロイの現在のステータスが表示されます。デプロイメントのステータスが“成功”と表示されるまで待ってから次のステップに進みます
- Windows デバイスで、Windows エクスプローラーを使用して AWS IoT Greengrass のワークフォルダ(C:\greengrass\v2\work\com.example.software)に移動します。バッチファイルでは、スクリプトの結果を含むhardware.txtファイルが作成されています
- このファイルには、バッチスクリプトから収集したWindowsの情報が含まれます。私のコンピュータのドキュメントの内容は以下の通りです
- AWS IoT Greengrassには、公開されているオープンソースコンポーネントのリポジトリがどんどん増えています。Developer Guide、 AWS-provided componentsでより多くの例を見ることができます。その中の一つがLog Managerです。Log Managerでは、コンポーネントのログファイルや任意のファイルを取得し、Amazon CloudWatchのログに安全に送信することができます
クリーンアップ
AWS IoT Greengrassでは、使用した分だけ料金が発生します。接続されたデバイスごとに課金されるため、デバイスを切断すると課金されなくなります。現在の価格は、製品ページの AWS IoT Greengrassの料金 で確認できます。
AWS IoTアカウントからデバイスを削除するには、以下の手順に従います。
- AWS IoT Coreのコンソールに移動します
- 管理を選択し、モノを選択します
- デバイスの隣にあるチェックボックスを選択し、 削除 を選択します
- プロンプトでデバイスの名前を確認し、 削除を選択します
Amazon S3バケット内にアップロードしたアーティファクトの保管料も請求されます。Amazon S3バケット内のオブジェクトとバケットを削除するには、Amazon Simple Storage Service(S3)ユーザーガイドのバケットの削除の手順に従ってください。
最後に
このブログでは、AWS IoT GreengrassをWindowsデバイスで使用して、IoT開発でよく遭遇する課題の解決に役立つ特定のツールを展開・実行する方法を紹介しました。AWS IoT Greengrassには、様々なIoTの課題を迅速かつ容易に解決するのに役立つ多くの事前構築されたコンポーネントが付属しています。これらのコンポーネントを使用して、今すぐWindows上でIoTソリューションの構築を始めることができます。
詳細については、開発者ガイドの Getting started with AWS IoT Greengrass V2 のページをご覧ください。このリリースの詳細については、AWS IoT Greengrass v2.5のリリースノートをご覧ください。Windowsでサポートされているコンポーネントのセットを見るには、AWS IoT Greengrassのパブリックコンポーネントリストをご覧ください。
著者について(Paul Shiner & Kash Patel)
Paul Shinerは、英国を拠点とするシニアIoTスペシャリストで、IoTによるお客様のビジネス課題の解決を支援しています。 | |
Kash Patelは、米国のシニアテクニカルプロダクトマネージャーとして、AWSを使ったスケーラブルなIoTソリューションの構築を支援しています。 |
原文はこちら
翻訳はソリューションアーキテクトの渡邉が担当しました。