クイックスタート: Greengrass デバイスのセットアップ - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は機能更新を受信しなくなり、2023 年 6 月 30 日までセキュリティパッチとバグ修正のみ受信します。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。重要な新機能新たなプラットフォームのサポートが追加された AWS IoT Greengrass Version 2 への移行を強くお勧めします。

クイックスタート: Greengrass デバイスのセットアップ

Greengrass デバイスのセットアップは、数分でコアデバイスをセットアップするスクリプトで、AWS IoT Greengrass を使い始めることができます。このスクリプトは、次の場合に使用します。

  1. デバイスを設定し、AWS IoT Greengrass Core ソフトウェアをインストールします。

  2. クラウドベースのリソースを設定します。

  3. オプションで、MQTT メッセージを AWS IoT Greengrass コアから AWS IoT に送信する Hello World Lambda 関数を持つ Greengrass グループをデプロイします。このセットアップでは、次の図に示す Greengrass 環境を設定します。

    
                    AWS IoT から AWS IoT Greengrass コアに MQTT メッセージを送信する Hello World Lambda 関数。

要件

Greengrass デバイスのセットアップには、次の要件があります。

  • コアデバイスは、サポートされているプラットフォームを使用する必要があります。デバイスには、aptyum、または opkg の適切なパッケージマネージャーがインストールされている必要があります。

     

  • スクリプトを実行する Linux ユーザーは、sudo として実行するアクセス許可を持っている必要があります。

     

  • AWS アカウント 認証情報を入力する必要があります。詳細については、「AWS アカウント 認証情報の提供」を参照してください。

    注記

    Greengrass デバイスのセットアップは、最新バージョンの AWS IoT Greengrass Core ソフトウェアをデバイスにインストールします。AWS IoT Greengrass Core ソフトウェアをインストールすると、Greengrass Core ソフトウェアのライセンス契約に同意したと見なされます。

Greengrass デバイスのセットアップを実行する

Greengrass デバイスのセットアップは、ほんの数ステップで実行できます。AWS アカウント 認証情報を入力すると、スクリプトによって Greengrass コアデバイスがプロビジョニングされ、Greengrass グループが数分でデプロイされます。ターゲットデバイスのターミナルウィンドウで次のコマンドを実行します。

注記

次のステップでは、スクリプトを対話モードで実行する方法を示します。対話モードでは、各入力値を入力または受け入れるように求められます。スクリプトをサイレントで実行する方法については、「Greengrass デバイスのセットアップをサイレントモードで実行する」を参照してください。

 

  1. 認証情報を入力しないでください。この手順では、一時的なセキュリティ認証情報を環境変数として提供することを前提としています。

    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    注記

    Greengrass デバイスセットアップを Raspbian または OpenWrt プラットフォームで実行している場合は、これらのコマンドのコピーを作成してください。デバイスを再起動した後、それらを再度指定する必要があります。

  2. スクリプトをダウンロードして起動します。wget または curl を使用してスクリプトをダウンロードできます。

    wget:

    wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive

    curl:

    curl https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh > gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive
  3. 入力値を求めるコマンドプロンプトに進みます。[Enter] キーを押してデフォルト値を使用するか、カスタム値を入力して [Enter] キーを押します。

    スクリプトは、次のようなステータスメッセージを端末に書き込みます。

    
                    端末にメッセージを出力します。
  4. コアデバイスで Raspbian または OpenWrt が実行されている場合は、プロンプトが表示されたらデバイスを再起動し、認証情報を入力して、スクリプトを再起動します。

    1. デバイスを再起動するように求められたら、次のいずれかのコマンドを実行します。

      Raspbian プラットフォームの場合:

      sudo reboot

      OpenWrt プラットフォームの場合:

      reboot
    2. デバイスの起動後、ターミナルを開き、環境変数として認証情報を入力します。

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. スクリプトを再起動します。

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive
    4. 前回のセッションからの入力値を使用するか、新規インストールを開始するかのプロンプトが表示されたら、yes と入力して入力値を再利用します。

      注記

      再起動が必要なプラットフォームでは、認証情報を除く、前のセッションからの入力値が一時的に GreengrassDeviceSetup.config.info ファイルに保存されます。

    セットアップが完了すると、ターミナルには、次のような成功ステータスメッセージが表示されます。

    
                    端末の出力に成功メッセージが表示されます。
  5. 指定した入力値を使用してスクリプトが設定する新しい Greengrass グループを確認します。

    1. コンピュータで AWS Management Console にサインインし、AWS IoT コンソールを開きます。

      注記

      コンソールで選択した AWS リージョンが、Greengrass 環境の設定に使用したものと同じであることを確認します。デフォルトでは、[Region] (リージョン) は [US West (Oregon)] (米国西部 (オレゴン)) です。

    2. ナビゲーションペインで、[Greengrass devices] (Greengrass デバイス) を展開し、[Groups (V1)] (グループ〔V1〕) を選択して、新しく作成したグループを検索します。

  6. Hello World Lambda 関数を含めた場合、Greengrass デバイスセットアップは、Greengrass グループをコアデバイスにデプロイします。Lambda 関数をテストしたり、グループから Lambda 関数を削除したりする方法については、開始方法チュートリアルのモジュール 3-1 の「Lambda 関数がコアデバイスで実行されていることを確認する」に進みます。

    注記

    コンソールで選択した AWS リージョンが、Greengrass 環境の設定に使用したものと同じであることを確認します。デフォルトでは、[Region] (リージョン) は [US West (Oregon)] (米国西部 (オレゴン)) です。

    Hello World Lambda 関数を含めなかった場合は、独自の Lambda 関数を作成するか、Greengrass の他の機能を試すことができます。例えば、Docker アプリケーションデプロイ コネクタをグループに追加し、それを使用して Docker コンテナをコアデバイスにデプロイできます。

     

問題のトラブルシューティング

次の情報は、AWS IoT Greengrass デバイスのセットアップ時の問題のトラブルシューティングに役立ちます。

Error: Python (python3.7) not found. Attempting to install it...

解決策: Amazon EC2 インスタンスを使用すると、このエラーが表示されることがあります。このエラーは、Python が /usr/bin/python3.7 フォルダにインストールされていない場合に発生します。このエラーを解決するには、Python をインストールした後で正しいディレクトリに移動します。

sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3.7

その他のトラブルシューティング

AWS IoT Greengrass デバイスのセットアップに関するその他の問題をトラブルシューティングするには、ログファイルでデバッグ情報を探します。

  • Greengrass デバイスのセットアップ設定に関する問題については、/tmp/greengrass-device-setup-bootstrap-epoch-timestamp.log ファイルを確認してください。

  • Greengrass グループまたはコア環境の設定に問題がある場合は、指定したディレクトリと同じディレクトリにある、GreengrassDeviceSetup-date-time.log または指定した場所にある gg-device-setup-latest.sh ファイルを確認してください。

トラブルシューティングのヘルプについては、「AWS IoT Greengrass のトラブルシューティング」を参照するか、AWS re:Post の AWS IoT Greengrass タグを確認してください。

Greengrass デバイスセットアップ設定オプション

AWS リソースにアクセスし、Greengrass 環境をセットアップするように Greengrass デバイスセットアップを設定します。

AWS アカウント 認証情報の提供

Greengrass デバイスのセットアップでは、AWS アカウント 認証情報を使用して AWS リソースにアクセスします。IAM ユーザーの長期認証情報、または IAM ロールの一時的なセキュリティ認証情報をサポートします。

最初に、認証情報を取得します。

  • 長期認証情報を使用するには、IAM ユーザーのアクセスキー ID とシークレットアクセスキーを指定します。長期認証情報のアクセスキーの作成については、「IAM ユーザーガイド」の「IAM ユーザーのアクセスキーの管理」を参照してください。

     

  • 一時的なセキュリティ認証情報を使用するには (推奨)、引き受けた IAM ロールのアクセスキー ID、シークレットアクセスキー、およびセッショントークンを指定します。AWS STS assume-role コマンドからの一時的なセキュリティ認証情報の抽出については、「IAM ユーザーガイド」の「AWS CLI で一時的なセキュリティ認証情報を使用する」を参照してください。

注記

このチュートリアルでは、IAM ユーザーまたは IAM ロールに管理者のアクセス権があることを前提としています。

次に、次の 2 つのうちいずれかの方法で Greengrass デバイスのセットアップに認証情報を入力します。

  • 環境変数として。Greengrass デバイスのセットアップを実行する のステップ 1 に示すようにスクリプトを開始する前に、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY、および AWS_SESSION_TOKEN (必要な場合)環境変数を設定します。

     

  • 入力値として。スクリプトを起動した後、アクセスキー ID、シークレットアクセスキー、およびセッショントークン (必要な場合) の値をターミナルに直接入力します。

Greengrass デバイスのセットアップでは、認証情報が保存または保存されません。

 

入力値の指定

対話モードでは、入力値を求めるプロンプトが表示されます。[Enter] キーを押してデフォルト値を使用するか、カスタム値を入力して [Enter] キーを押します。サイレントモードでは、スクリプトの起動後に入力値を指定します。

AWS アクセスキー ID

長期的または一時的なセキュリティ認証情報のアクセスキー ID。環境変数として認証情報を指定しない場合のみ、このオプションを入力値として指定してください。詳細については、「AWS アカウント 認証情報の提供」を参照してください。

サイレントモードのオプション名: --aws-access-key-id

AWS シークレットアクセスキー

長期的または一時的なセキュリティ認証情報からのシークレットアクセスキー。環境変数として認証情報を指定しない場合のみ、このオプションを入力値として指定してください。詳細については、「AWS アカウント 認証情報の提供」を参照してください。

サイレントモードのオプション名: --aws-secret-access-key

AWS セッショントークン

一時的なセキュリティ認証情報からのセッショントークン。環境変数として認証情報を指定しない場合のみ、このオプションを入力値として指定してください。詳細については、「AWS アカウント 認証情報の提供」を参照してください。

サイレントモードのオプション名: --aws-session-token

AWS リージョン

Greengrass グループを作成する AWS リージョン。サポートされている AWS リージョンの一覧については、「アマゾン ウェブ サービス全般のリファレンス」の「AWS IoT Greengrass」を参照してください。

デフォルト値: us-west-2

サイレントモードのオプション名: --region

グループ名

Greengrass グループの名前。

デフォルト値: GreengrassDeviceSetup_Group_guid

サイレントモードのオプション名: --group-name

コア名

Greengrass Core の名前。コアは、AWS IoT Greengrass Core ソフトウェアを実行する AWS IoT デバイス(モノ)です。コアは、AWS IoT レジストリと Greengrass グループに追加されます。名前を指定する場合は、AWS アカウントと AWS リージョン 内で一意である必要があります。

デフォルト値: GreengrassDeviceSetup_Core_guid

サイレントモードのオプション名: --core-name

AWS IoT Greengrass Core ソフトウェアのインストールパス

AWS IoT Greengrass Core ソフトウェアをインストールするデバイスファイルシステム内の場所。

デフォルト値: /

サイレントモードのオプション名: --ggc-root-path

Hello World Lambda 関数

Greengrass グループに Hello World Lambda 関数を含めるかどうかを示します。この関数は、5 秒ごとに MQTT メッセージを hello/world トピックに発行します。

スクリプトは、このユーザー定義 Lambda 関数を AWS Lambda で作成して発行し、Greengrass グループに追加します。また、このスクリプトは、関数が MQTT メッセージを AWS IoT に送信できるようにするサブスクリプションをグループ内に作成します。

注記

これは Python 3.7 Lambda 関数です。Python 3.7 がデバイスにインストールされておらず、スクリプトがそれをインストールできない場合、スクリプトはターミナルにエラーメッセージを出力します。Lambda 関数をグループに含めるには、Python 3.7 を手動でインストールし、スクリプトを再起動する必要があります。Lambda 関数を使用せずに Greengrass グループを作成するには、スクリプトを再起動し、関数を含めるように求められたら no を入力します。

デフォルト値: no

サイレントモードのオプション名: --hello-world-lambda - このオプションは値を取りません。関数を作成する場合は、コマンドに含めます。

デプロイのタイムアウト

Greengrass デバイスのセットアップが Greengrass グループのデプロイの状態のチェックを停止するまでの秒数。これは、グループに Hello World Lambda 関数が含まれている場合にのみ使用されます。それ以外の場合、グループはデプロイされません。

デプロイ時間は、ネットワークの速度によって異なります。ネットワーク速度が遅い場合は、この値を大きくすることができます。

デフォルト値: 180

サイレントモードのオプション名: --deployment-timeout

ログパス

Greengrass グループおよびコアセットアップオペレーションに関する情報を含むログファイルの場所。このログを使用して、Greengrass グループとコアセットアップに関するデプロイやその他の問題のトラブルシューティングを行います。

デフォルト値: ./

サイレントモードのオプション名: --log-path

詳細レベル

スクリプトの実行中にターミナルに詳細なログ情報を出力するかどうかを示します。この情報を使用して、デバイスのセットアップのトラブルシューティングを行うことができます。

デフォルト値: no

サイレントモードのオプション名: --verbose - このオプションは値を取りません。詳細なログ情報を出力する場合は、コマンドに含めます。

 

Greengrass デバイスのセットアップをサイレントモードで実行する

Greengrass デバイスのセットアップをサイレントモードで実行して、スクリプトが値の入力を要求しないようにできます。サイレントモードで実行するには、スクリプトの起動後に bootstrap-greengrass モードと入力値 を指定します。デフォルト値を使用する場合は、入力値を省略できます。

この手順は、スクリプトを起動する前に環境変数として AWS アカウント 認証情報を指定するか、スクリプトを起動した後に入力値として指定するかによって異なります。

  1. 環境変数として認証情報を指定します。次の例では、セッショントークンを含む一時的な認証情報をエクスポートします。

    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    注記

    Greengrass デバイスセットアップを Raspbian または OpenWrt プラットフォームで実行している場合は、これらのコマンドのコピーを作成してください。デバイスを再起動した後、それらを再度指定する必要があります。

  2. スクリプトをダウンロードして起動します。必要に応じて入力値を指定します。例:

    • すべてのデフォルト値を使用するには:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass
    • カスタム値を指定するには:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --region us-east-1 --group-name Custom_Group_Name --core-name Custom_Core_Name --ggc-root-path /custom/ggc/root/path --deployment-timeout 300 --log-path /customized/log/path --hello-world-lambda --verbose
    注記

    curl を使用してスクリプトをダウンロードするには、コマンドで wget -q -Ocurl に置き換えます。

  3. コアデバイスで Raspbian または OpenWrt が実行されている場合は、プロンプトが表示されたらデバイスを再起動し、認証情報を入力して、スクリプトを再起動します。

    1. デバイスを再起動するように求められたら、次のいずれかのコマンドを実行します。

      Raspbian プラットフォームの場合:

      sudo reboot

      OpenWrt プラットフォームの場合:

      reboot
    2. デバイスの起動後、ターミナルを開き、環境変数として認証情報を入力します。

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. スクリプトを再起動します。

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass
    4. 前回のセッションからの入力値を使用するか、新規インストールを開始するかのプロンプトが表示されたら、yes と入力して入力値を再利用します。

      注記

      再起動が必要なプラットフォームでは、認証情報を除く、前のセッションからの入力値が一時的に GreengrassDeviceSetup.config.info ファイルに保存されます。

    セットアップが完了すると、ターミナルには、次のような成功ステータスメッセージが表示されます。

    
                                        端末の出力に成功メッセージが表示されます。
  4. Hello World Lambda 関数を含めた場合、Greengrass デバイスセットアップは、Greengrass グループをコアデバイスにデプロイします。Lambda 関数をテストしたり、グループから Lambda 関数を削除したりする方法については、開始方法チュートリアルのモジュール 3-1 の「Lambda 関数がコアデバイスで実行されていることを確認する」に進みます。

    注記

    コンソールで選択した AWS リージョンが、Greengrass 環境の設定に使用したものと同じであることを確認します。デフォルトでは、[Region] (リージョン) は [US West (Oregon)] (米国西部 (オレゴン)) です。

    Hello World Lambda 関数を含めなかった場合は、独自の Lambda 関数を作成するか、Greengrass の他の機能を試すことができます。例えば、Docker アプリケーションデプロイ コネクタをグループに追加し、それを使用して Docker コンテナをコアデバイスにデプロイできます。

     

  1. スクリプトをダウンロードして起動します。認証情報を指定し、必要に応じてその他の入力値を指定します。次の例は、セッショントークンを含む一時的な認証情報を提供する方法を示しています。

    • すべてのデフォルト値を使用するには:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE=
    • カスタム値を指定するには:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE= --region us-east-1 --group-name Custom_Group_Name --core-name Custom_Core_Name --ggc-root-path /custom/ggc/root/path --deployment-timeout 300 --log-path /customized/log/path --hello-world-lambda --verbose
    注記

    Greengrass デバイスセットアップを Raspbian または OpenWrt プラットフォームで実行している場合は、これらの認証情報のコピーを作成してください。デバイスを再起動した後、それらを再度指定する必要があります。

    curl を使用してスクリプトをダウンロードするには、コマンドで wget -q -Ocurl に置き換えます。

  2. コアデバイスで Raspbian または OpenWrt が実行されている場合は、プロンプトが表示されたらデバイスを再起動し、認証情報を入力して、スクリプトを再起動します。

    1. デバイスを再起動するように求められたら、次のいずれかのコマンドを実行します。

      Raspbian プラットフォームの場合:

      sudo reboot

      OpenWrt プラットフォームの場合:

      reboot
    2. スクリプトを再起動します。コマンドには認証情報を含める必要がありますが、他の入力値を含めることはできません。例:

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. 前回のセッションからの入力値を使用するか、新規インストールを開始するかのプロンプトが表示されたら、yes と入力して入力値を再利用します。

      注記

      再起動が必要なプラットフォームでは、認証情報を除く、前のセッションからの入力値が一時的に GreengrassDeviceSetup.config.info ファイルに保存されます。

    セットアップが完了すると、ターミナルには、次のような成功ステータスメッセージが表示されます。

    
                                        端末の出力に成功メッセージが表示されます。
  3. Hello World Lambda 関数を含めた場合、Greengrass デバイスセットアップは、Greengrass グループをコアデバイスにデプロイします。Lambda 関数をテストしたり、グループから Lambda 関数を削除したりする方法については、開始方法チュートリアルのモジュール 3-1 の「Lambda 関数がコアデバイスで実行されていることを確認する」に進みます。

    注記

    コンソールで選択した AWS リージョンが、Greengrass 環境の設定に使用したものと同じであることを確認します。デフォルトでは、[Region] (リージョン) は [US West (Oregon)] (米国西部 (オレゴン)) です。

    Hello World Lambda 関数を含めなかった場合は、独自の Lambda 関数を作成するか、Greengrass の他の機能を試すことができます。例えば、Docker アプリケーションデプロイ コネクタをグループに追加し、それを使用して Docker コンテナをコアデバイスにデプロイできます。