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 GreengrassAWS Identity and Access ManagementAmazon S3
完了までのコスト(目安) 1ドル

チュートリアル

AWS IoT Greengrass for Windowsは、クイックインストール方式を使用してインストールできます。これはGreengrassデバイス上で実行され、関連するデバイスとAWSサービスをプロビジョニングする自動化されたプロセスです。または、AWS IoTへの接続に必要な証明書が事前にプロビジョニングされたデバイスを、後日デプロイすることもできます。このブログでは、AWSコンソールを介したクイックインストールの方法を使って、1台のデバイスをセットアップします。以下の例では、Microsoft Windows 10 Enterpriseを使用しています。

以下のステップで実行していきます。

  1. AWS IoT Greengrass スタートガイドに移動する
  2. デバイスにJavaをインストールする
  3. デバイスをプロビジョニングする権限を持つAWS IAMユーザーを作成する
  4. AWS Command Line Interface(CLI)のバージョン2をデバイスにインストールする
  5. AWS IoT Greengrassを実行するWindowsマシンにローカルユーザーを作成する
  6. AWS IoT Greengrassのインストーラーをダウンロードして実行する
  7. AWS IoT Greengrassがインストールされ、実行されていることを確認する
  8. 最初のAWS IoT Greengrassコンポーネントを作成し、デプロイする

前提条件

ステップ1. AWS IoT Greengrass スタートアップガイドを開く

  1. AWS IoT Coreのコンソールに移動します
  2. メニューのGreengrass を展開します
  3. 使用を開始する を選択します
  4. 1つのCoreデバイスをセットアップ を選択します
  5. Greengrass コアソフトウェアをインストール セクションで Windows を選択します
    AWS IoT Greengrass installation in the console showing the installation steps.
  6. このブログでは、以降でWindows端末でAWS IoT Greengrassをインストールする手順をご紹介していきます
    AWS IoT Greengrass screen showing Windows selection and the related steps to install on Windows.

ステップ2. 端末にJavaをインストールする

まず最初に、Javaをインストールするか、デバイスにJavaがインストールされているかを確認します。NucleusなどのAWS IoT Greengrassのコンポーネントは、プラットフォーム間の移植性を高めるためにJavaで記述されているため、最低でもJavaバージョン8が必要です。

以下の手順でJavaがインストールされているかどうかを確認します。

  1. コマンドプロンプトを開く(Windowsの検索バーに コマンドプロンプトと入力します)
  2. java -version と入力します

Javaがインストールされている場合は、出力にバージョンが表示されます。

Javaがインストールされていない場合は、次のようなメッセージが表示されます: ‘java’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。

OpenJavaまたはCorrettoは、Corretto 11ユーザーガイドからダウンロードしてインストールできます。Javaをインストールした後、マシンを再起動する必要があるかもしれません。

ステップ3. デバイスをプロビジョニングする権限を持つAWS IAMユーザーを作成する

次のステップでは、AWSの認証情報の設定をします。デバイス上には、AWS IoT Greengrassデバイスの作成とプロビジョニングの権限を持つAWS IAMユーザーのクレデンシャルを設定する必要があります。これは、クイックスタートの方法に従ってインストールする場合にのみ必要です。本番環境や多数のデバイスがある場合は、このプロセスを自動化することを検討します。

  1. AWSコンソールを開き、IAMコンソールに移動します
  2. ユーザー を選択します
  3. ユーザーを追加 を選択します
  4. ユーザー名に GGv2ProvisionUser と入力します
  5. このIAMユーザーはCLIでしか使わないので、 アクセスキー – プログラムによるアクセス を選択します
  6. 次のステップ: アクセス権限 を選択し移動します
  7. 既存のポリシーを直接アタッチ を選択します
  8. IAMFullAccess を検索して選択します。これは、新しいAWS IoT Greengrassのユーザーアカウントとロールの作成に使用します
  9. AWSIoTFullAccess を検索して選択します。これは、デバイスの作成に使用されます
  10. AWSGreengrassFullAccess を検索して選択します。これは、AWS IoT Greengrassサービスを更新するために使用されます
  11. 次のステップ: タグ を選択し移動します
  12. 次のステップ: 確認 を選択し移動します
  13. ユーザーの作成 を選択します。
  14. .csvのダウンロード ボタンをクリックして、ログイン認証のアクセスキーとシークレットアクセスキーを保存します
  15. 閉じる を選択します

ステップ4. AWS Command Line Interface(CLI)のバージョン2をデバイスにインストールする

次に、ステップ3で作成したユーザーでAWS CLIの設定を行います。

  1. デバイスにAWS CLIをインストールします。AWS Command Line Interface ユーザーガイドの Getting started with the AWS CLI に従いインストールします。インストールしたら、マシンを再起動する必要があります
  2. コマンドプロンプトを開きます(Windowsの検索バーに コマンドプロンプト と入力)
  3. コマンドプロンプトのウィンドウに aws configure と入力し、Enterキーを押します
  4. ステップ3で生成した AWS Access Key ID を入力します
  5. ステップ3で生成した AWS Secret Access key を入力します
  6. デフォルトのリージョン名を入力します。私の場合はアイルランドを使用しているので、eu-west-1 となります
  7. デフォルトの出力形式である json を入力しますInstall version 2 of the AWS Command Line Interface (CLI) on the device

ステップ5. AWS IoT Greengrassを実行するWindowsマシンに、ローカルユーザーを作成する

次に、AWS IoT Greengrassデバイスが使用するローカルユーザーを作成します。そのためには、psexec.exeをインストールする必要があります。

  1. MicrosoftのPsExecユーティリティをダウンロードし、zipファイルを解凍します
  2. psexec.exeC:\Windows\System32にコピーします
  3. 管理者としてコマンドプロンプトを開きます(Windowsの検索バーに コマンドプロンプト と入力し、マウスで右クリックしメニューから 管理者として実行 を選択します)
    Windows command prompt option showing run as administrator option
  4. UACポップアップが表示されたらYesを選択します
  5. 次のコマンドを実行して、新しいユーザーを作成します。<password>を安全なパスワードに置き換えてください
    net user /add ggc_user <password>
  6. ここで、以下のコマンドを実行して、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つのコアデバイスをセットアップする方法を紹介します。

  1. AWSコンソールにログインし、AWS IoT Core に移動します
  2. Greengrassを展開し、 使用を開始する を選択します
  3. 1つのCoreデバイスをセットアップ を選択します
  4. コアデバイス名とモノのグループは、デフォルトのままでも構いません
  5. ステップ 3: Greengrassコアソフトウェアをインストール では、Windows を選択します
  6. .zipをダウンロード を選択します
    Install AWS IoT Greengrass step 3 that gives you an option to download and unpack the installer file
  7. AWS IoT Greengrass v2 のファイルを解凍します
  8. コマンドプロンプトを管理者として開きます。(Windowsの検索バーに コマンドプロンプト と入力し、管理者として実行 を選択します)
  9. ファイルを解凍したフォルダに移動します(私の場合は以下のようになっています)
    D:\Users\paulshiner\Desktop\gg>
  10. コンソールに表示されている インストーラを実行 (※)のコマンドを実行します。AWS IoTリソースのプロビジョニング、ThingのThing Groupへの追加、Nucleusの設定、Nucleusのシステムとしてのセットアップが成功した旨のメッセージが出力されますので確認してください
    ※ コンソールに表示されたコマンドはダウンロードファイルをGreengrassCoreというディレクトリに解凍していることを前提としています。
    Command prompt window showing the output of the execution of the install command
  11. インストールが完了すると、次のステップに進むことができます

ステップ7. AWS IoT Greengrassがインストールされ、実行されていることを確認する

AWSコンソールにデバイスが表示されていることを確認します。

  1. AWS IoT Core のコンソールに移動します
  2. Greengrass を展開します
  3. コアデバイス を選択します
  4. ステップ6で作成したデバイスが Greengrassコアデバイス の下に表示されますAWS IoT Greengrass console screen showing the core devices option
  5. AWS IoT Greengrassがシステムサービスとしてインストールされ、実行されていることを、サービス を開いて確認します(Windowsの検索バーにサービスと入力)
  6. サービスリストの greengrass を確認し、ステータスが 実行中 であることを確認します。そうでない場合は、ステップ6のインストール手順を繰り返し、エラーがないか確認します。デベロッパーガイドのTroubleshooting AWS IoT Greengrass V2もご確認ください
    List of Windows services showing AWS IoT Greengrass is running

ステップ8. 最初のAWS IoT Greengrassコンポーネントの作成と展開

このステップでは、デバイスにデプロイするためのシンプルなバッチファイルを作成します。このバッチファイルは、現在のOSバージョンをテキストファイルに記録します。このバッチファイルをアップロードし、リモートで取得し実行します。ここでは、AWS IoT Greengrassが実行できる最も単純なコンポーネント例として、バッチファイルを選択しました。サードパーティのシステムからデータを取得するために、実行ファイルやPythonコードを実行することもできます。

  1. 以下の内容で 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" 
    )
  2. このファイルをAmazon S3に、バージョン管理に使えるフォルダ構造で保存します
  3. Amazon S3 コンソール に移動します
  4. バケットを作成 を選択します
  5. バケットにグローバルにユニークな名前(greengrasscomponents + 作成日時などのランダムな文字列)を付けます
  6. AWS IoT Greengrassデバイスがインストールされたリージョンを選択します
  7. バケットを作成 を選択します
  8. 前の画面に戻ったら、先ほど作成したバケット名を選択します
  9. フォルダの作成 を選択します
  10. フォルダ名には artifacts と入力します
  11. そのフォルダ内に移動して、 com.example.software という名前の別のフォルダを作成します
  12. このフォルダに移動して、 1.0.0 という名前のフォルダを作成します。このフォルダには、最初のバージョンのコードが格納されます
  13. これで、 greengrasscomponents_<unique name>/artifacts/com.example.software/1.0.0/ のようなフォルダ構造になります
  14. 1.0.0フォルダに移動し アップロード を選択し、先ほど作成した software.bat ファイルをアップロードします
  15. このフォルダの中にある software.bat のリンクを選択します
  16. S3 URI を選択して、そのリンクをコピーします。このリンクはレシピファイルで必要になります

コンポーネントのデプロイを試みる前に、AWS IoT GreengrassロールがAmazon S3バケットからファイルを読み取るためのアクセス権を持っていることを確認する必要があります。

  1. AWS IoT Coreのコンソールに移動します
  2. 安全性 を選択します
  3. ロールエイリアス を選択します
  4. AWS IoT Greengrassのインストーラープロセスで作成されたロールエイリアスが一覧表示されます
    AWS IoT role alias screen showing the alias created during the AWS IoT Greengrass installation
  5. ロールエイリアスを選択します
    AWS IoT Greengrass screen showing edit IAM role option
  6. IAMロールの編集 を選択します
  7. このリンクをクリックすると、そのロールのIAMコンソールが開きます
  8. アクセス権限 タブを開き、 GreengrassV2TokenExchangeRoleAccess ポリシーを選択します。リストを展開する必要があるかもしれません
  9. ポリシーの編集 を選択します
  10. さらにアクセス許可を追加する を選択します
  11. サービスの選択 を展開して S3 を検索し、サービスAmazon S3を選択します
  12. 次に アクセスレベル 見出しの下にある 読み込み セクションを展開し、次のチェックボックス GetObjectGetBucketLocation を選択します
  13. 矢印で リソース セクションを展開します
  14. bucket の横にある ARNの追加 を選択します。バケット名を入力するウィンドウが表示されます。私の場合はgreengrasscomponents_<unique name>です
  15. 追加を選択します
  16. objectの隣にあるARNの追加を選択します。バケット名とオブジェクト名を入力するウィンドウが表示されます。バケット名を入力します(私の場合は、greengrasscomponents_<unique name>
  17. オブジェクト名の入力ボックスの隣にある すべて を選択すると、このバケット内のすべてのオブジェクトをポリシーで取得できるようになります
    Edit policy screenshot showing the example configuration.
  18. ポリシーの確認 を選択します
  19. 変更の保存 を選択します

これで、WindowsにインストールしたAWS IoT Greengrassデバイスに最初のコンポーネントをデプロイして実行する準備ができました。

  1. AWS IoT Coreのコンソールに移動します
  2. Greengrass を展開し コンポーネント を選択します
  3. コンポーネントを作成 を選択します
  4. 以下のレシピを入力します
    <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"
                    }
                ]
            }
        ]
    }
  5. コンポーネントを作成 を選択します
  6. デプロイ を選択します
  7. Windowsデバイス用のデプロイメントグループを選択します
  8. デプロイボタンをクリックします。デプロイ画面に戻り、IoTジョブを選択すると、デプロイの現在のステータスが表示されます。デプロイメントのステータスが“成功”と表示されるまで待ってから次のステップに進みます
  9. Windows デバイスで、Windows エクスプローラーを使用して AWS IoT Greengrass のワークフォルダ(C:\greengrass\v2\work\com.example.software)に移動します。バッチファイルでは、スクリプトの結果を含むhardware.txtファイルが作成されています
    Windows explorer screen showing the successful execution of the batch file that created a hardware.txt file
  10. このファイルには、バッチスクリプトから収集したWindowsの情報が含まれます。私のコンピュータのドキュメントの内容は以下の通りです
    Windows Notepad screen showing the contents of the hardware.txt file created
  11. AWS IoT Greengrassには、公開されているオープンソースコンポーネントのリポジトリがどんどん増えています。Developer Guide、 AWS-provided componentsでより多くの例を見ることができます。その中の一つがLog Managerです。Log Managerでは、コンポーネントのログファイルや任意のファイルを取得し、Amazon CloudWatchのログに安全に送信することができます

クリーンアップ

AWS IoT Greengrassでは、使用した分だけ料金が発生します。接続されたデバイスごとに課金されるため、デバイスを切断すると課金されなくなります。現在の価格は、製品ページの AWS IoT Greengrassの料金 で確認できます。

AWS IoTアカウントからデバイスを削除するには、以下の手順に従います。

  1. AWS IoT Coreのコンソールに移動します
  2. 管理を選択し、モノを選択します
  3. デバイスの隣にあるチェックボックスを選択し、 削除 を選択します
  4. プロンプトでデバイスの名前を確認し、 削除を選択します

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 Paul Shinerは、英国を拠点とするシニアIoTスペシャリストで、IoTによるお客様のビジネス課題の解決を支援しています。
 
Kash Patelは、米国のシニアテクニカルプロダクトマネージャーとして、AWSを使ったスケーラブルなIoTソリューションの構築を支援しています。

原文はこちら
翻訳はソリューションアーキテクトの渡邉が担当しました。