AWS IoT Greengrass V2 の使用を開始する - AWS IoT Greengrass

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS IoT Greengrass V2 の使用を開始する

基本的な機能について学ぶために、この入門チュートリアルを完了することができますAWS IoT Greengrass V2。このチュートリアルでは、以下の作業を行います。

  • のインストールと設定AWS IoT GreengrassRaspberry Pi などの Linux デバイス上のコアソフトウェア。このデバイスはAWS IoT GreengrassCore デバイス。

  • Greengrass コアデバイスで Hello World コンポーネントを開発します。コンポーネントは、Greengrass コアデバイス上で動作するソフトウェアモジュールです。

  • そのコンポーネントをAWS IoT Greengrass V2() AWS クラウド 。

  • そのコンポーネントを AWS クラウド を Greengrass コアデバイスにします。

注記

このチュートリアルでは、開発環境をセットアップし、AWS IoT Greengrass。実稼働デバイスを設定および設定する方法の詳細については、以下を参照してください。

このチュートリアルは 20~30 分を要します。

Prerequisites

この入門チュートリアルを完了するには、以下が必要です。

  • AWS アカウント 。アカウントをお持ちでない場合は、「のセットアップ AWS アカウント 」を参照してください。

  • あんAWS Identity and Access Management管理者権限を持つ (IAM) ユーザー。

  • インターネット接続を備えた Windows、Mac、または Unix ライクな開発用コンピュータ。

  • Linux オペレーティングシステムと、開発用コンピューターと同じネットワークへのインターネット接続を備えたデバイス。Raspberry Pi をで使うことをお勧めします。Raspberry Pi(以前はRaspbianと呼ばれていた)。詳細については、「」を参照してください。をインストールして実行するための要件AWS IoT GreengrassCore ソフトウェア v2.0

  • Pythonデバイスにインストールされている 3.5 以降。

  • AWS Command Line Interface(AWS CLI) は、開発用コンピューターとデバイスに資格情報を使用してインストールおよび構成されています。同じものを使用していることを確認してください AWS リージョン を設定するにはAWS CLI開発用コンピュータとデバイスで。

    詳細については、「」を参照してください。をインストールするAWS CLIおよびの設定AWS CLI

    • MinimumAWS CLIV1バージョン:v1.18.197

    • MinimumAWS CLIV2バージョン:v2.1.11

    注記

    Raspberry Pi または別の 32 ビット ARM デバイスを使用する場合は、AWS CLIV1 です。AWS CLIV2 は 32 ビット ARM デバイスでは使用できません。詳細については、「」を参照してください。のインストール、更新、アンインストールAWS CLIバージョン 1

環境をセットアップする

このセクションの手順に従って Linux デバイスをセットアップし、AWS IoT GreengrassCore デバイス。これらの手順は、あなたがラズベリーパイOSとラズベリーパイを使用することを前提としています. 別のデバイスまたはオペレーティングシステムを使用している場合は、お使いのデバイスの関連ドキュメントを参照してください。

の Raspberry Pi をセットアップするにはAWS IoT Greengrass V2

  1. Raspberry Pi の SSH を有効にして、SSH をリモートで接続します。詳細については、「」を参照してください。SSH(セキュアシェル)()Raspberry Pi

  2. SSH で接続する Raspberry Pi の IP アドレスを見つけます。これを行うには、Raspberry Pi に次のコマンドを実行します。

    hostname -I
  3. SSHで Raspberry Pi Connect。開発用コンピュータで、以下のコマンドを実行します。置換usernameをサインインするユーザーの名前に置き換え、Pi-ip-addressを、前のステップで書き留めたIPアドレスに置き換えます。

    ssh username@pi-ip-address

    Raspberry Pi のデフォルトのユーザー名とパスワードはです。piおよびraspberry、それぞれ。

    重要

    開発コンピューターで以前のバージョンの Windows を使用している場合は、sshコマンドで、以下のようになります。sshRaspberry Pi に接続できません。あなたのラズベリーパイに接続するには、インストールして設定することができますPuTTYは、無償でオープンソースの SSH クライアントです。相談するPuTTY ドキュメントRaspberry Pi に接続するには。

  4. Java ランタイムをインストールします。AWS IoT Greengrassコアソフトウェアを実行するには、が必要です。Raspberry Pi では、次のコマンドを使用して Java 11 をインストールします。

    sudo apt install default-jdk

    インストールが完了したら、Java が Raspberry Pi で動作することを確認するには、次のコマンドを実行します。

    java -version

    このコマンドは、デバイス上で実行される Java のバージョンを表示します。出力は、次の例のようになります。

    openjdk version "11.0.9.1" 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)

AWS IoT Greengrass Core ソフトウェアをインストールします。

このセクションの手順に従って、Raspberry Pi をAWS IoT Greengrassローカル開発に使用できるコアデバイス。このセクションでは、以下を実行するインストーラをダウンロードして実行し、AWS IoT Greengrassお使いのデバイス用のコアソフトウェア:

  • Greengrass nucleus コンポーネントをインストールします。このコンポーネントは必須コンポーネントであり、AWS IoT Greengrassデバイス上のコアソフトウェア 詳細については、「」を参照してください。Greengrass 核成分

  • デバイスをAWS IoTThing に接続できるようにするデジタル証明書をダウンロードします。AWS。詳細については、「」を参照してくださいAWS IoT Greengrass のデバイス認証と認可

  • デバイスのAWS IoTのグループまたは艦隊である Thing グループに thing をAWS IoTモノ。Thing グループを使用すると、Greengrass コアデバイスのフリートを管理できます。ソフトウェアコンポーネントをデバイスに展開する場合、個々のデバイスまたはデバイスのグループに展開するかを選択できます。詳細については、「」を参照してください。によるデバイスの管理AWS IoT() AWS IoT Core 開発者ガイド

  • Greengrass コアデバイスがAWSのサービス。デフォルトでは、このロールにより、デバイスがAWS IoTAmazon CloudWatch Logs にログを送信します。詳細については、「」を参照してくださいコアデバイスとの対話を許可するAWSサービス

  • をインストールします。AWS IoT Greengrassコマンドラインインターフェイス (greengrass-cli)。このコンポーネントを使用して、コアデバイスで開発するカスタムコンポーネントをテストできます。詳細については、「」を参照してくださいGreengrass コマンドラインインターフェイス

をインストールして設定するにはAWS IoT GreengrassCore ソフトウェア

  1. 側のAWS IoT Greengrassコアデバイス(Raspberry Pi)をインストールするには、次のコマンドを実行してホームディレクトリに切り替えます。

    cd ~
  2. 次のコマンドを実行して、AWS IoT GreengrassCore ソフトウェア。

    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip

    このソフトウェアをダウンロードすると、Greengrass Core ソフトウェアのライセンス契約に同意したと見なされます。

  3. 次のコマンドを実行して、ソフトウェアを解凍し、ZIP ファイルを削除します。置換グリーングラススコアは、送信先フォルダの名前に置き換えます。

    unzip greengrass-nucleus-latest.zip -d GreengrassCore && rm greengrass-nucleus-latest.zip
  4. 側のAWSの認証情報をプロビジョニングできるようにして、インストーラーがAWS IoTコアデバイスの IAM リソースです。セキュリティを強化するために、プロビジョニングに必要な最小限のアクセス許可のみを許可する IAM ロールの認証情報を取得できます。詳細については、「」を参照してくださいインストーラーがリソースをプロビジョニングするための最小限の IAM ポリシー

    次のいずれかの操作を実行して、認証情報を取得し、[] に入力します。AWS IoT GreengrassCore ソフトウェア:

    • IAM ユーザーからの長期的な認証情報を使用する:

      1. IAM ユーザーのアクセスキー ID とシークレットアクセスキーを指定します。長期認証情報の取得方法の詳細については、「」を参照してください。IAM ユーザーのアクセスキーの管理()IAM ユーザーガイド

      2. 次のコマンドを実行して、に認証情報を渡します。AWS IoT GreengrassCore ソフトウェア。

        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    • (推奨)IAM ロールの一時的なセキュリティ認証情報を使用します。

      1. 引き受けた IAM ロールのアクセスキー ID、シークレットアクセスキー、およびセッショントークンを指定します。これらの認証情報の取得方法の詳細については、「」を参照してください。で一時的なセキュリティ認証情報を使用するAWS CLI()IAM ユーザーガイド

      2. 次のコマンドを実行して、に認証情報を渡します。AWS IoT GreengrassCore ソフトウェア。

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

    -AWS IoT Greengrassコアソフトウェアでは、認証情報が保存または保存されません。

  5. 次のコマンドを実行して、AWS IoT GreengrassCore ソフトウェアのインストーラ。コアデバイスでsystemdに設定されている場合、このコマンドはブート時に実行されるシステムサービスとしてソフトウェアをインストールします。また、このコマンドでは、ggc_userシステムユーザーとggc_groupシステムグループを使用して、コアデバイス上でソフトウェアコンポーネントを実行します。インストーラーによって、このデフォルトのユーザーとグループが作成されます。コマンドの引数値を次のように置き換えます。

    1. /greengrass/v2: インストールに使用するルートフォルダへのパス。AWS IoT GreengrassCore ソフトウェア。

    2. グリーングラススコア。解凍したフォルダへのパスAWS IoT GreengrassCore ソフトウェアのインストーラ。

    3. リージョン。- AWS リージョン リソースを検索または作成する。

    4. マイグリーングラススコア。名前AWS IoTGreengrass コアデバイスのモノです。モノが存在しない場合は、インストーラによってモノが作成されます。インストーラは、証明書をダウンロードし、AWS IoTモノ。詳細については、「」を参照してくださいAWS IoT Greengrass のデバイス認証と認可

      注記

      モノ名にコロン (:) 文字.

    5. マイグリーングラスコアグループ。の名前AWS IoTGreengrass コアデバイスのモノグループ。Thing グループが存在しない場合は、インストーラーによって作成され、Thing に追加されます。Thing グループが存在し、アクティブなデプロイメントがある場合、コアデバイスはそのデプロイメントで指定されたソフトウェアをダウンロードして実行します。

      注記

      Thing グループ名にコロン (:) 文字.

    6. グリーングラスV2TokenExchangeRole。Greengrass コアデバイスが一時的に取得できるようにする IAM ロールの名前AWS認証情報。ロールが存在しない場合、インストーラーはロールを作成し、GreengrassV2TokenExchangeRoleAccess。詳細については、「」を参照してくださいコアデバイスとの対話を許可するAWSサービス

    7. グリーングラスCoreTokenExchangeRoleAlias。Greengrass コアデバイスが一時的な認証情報を後で取得できるようにする IAM ロールのエイリアス。ロールのエイリアスが存在しない場合は、インストーラーによって作成され、指定した IAM ロールがポイントされます。詳細については、「」を参照してくださいコアデバイスとの対話を許可するAWSサービス

    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassCore/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user ggc_user:ggc_group \ --provision true \ --setup-system-service true \ --deploy-dev-tools true
    注記

    を実行している場合AWS IoT Greengrassをメモリが限られているデバイス上で、そのメモリ量を制御できます。AWS IoT GreengrassCore ソフトウェアの使用。メモリ割り当てを制御するには、JVM ヒープサイズオプションをjvmOptions設定パラメータを nucleus コンポーネントに追加します。詳細については、「」を参照してくださいJVM オプションによるメモリー割り当ての制御

    このコマンドを実行すると、インストーラーが成功したことを示す次のメッセージが表示されます。

    Successfully configured Nucleus with provisioned resource details! Configured Nucleus to deploy aws.greengrass.Cli component Successfully set up Nucleus as a system service
    注記

    システムに systemd がない場合、インストーラはソフトウェアをシステムサービスとして設定せず、成功メッセージは表示されません。

  6. ローカル開発ツールのデプロイには、最大で 1 分かかる場合があります。以下のコマンドを実行して、デプロイのステータスを確認できます。置換マイグリーングラススコアをコアデバイスの名前に置き換えます。

    aws greengrassv2 list-effective-deployments --core-device-thing-name MyGreengrassCore

    -coreDeviceExecutionStatusコアデバイスへのデプロイのステータスを示します。ステータスがSUCCEEDED次のコマンドを実行して Greengrass CLI がインストールされ、実行されていることを確認します。置換/greengrass/v2をルートフォルダへのパスに置き換えます。

    /greengrass/v2/bin/greengrass-cli help

    このコマンドは、Greengrass CLI のヘルプ情報を出力します。そのファイルにgreengrass-cliが見つからない場合、デプロイメントが Greengrass CLI をインストールできなかった可能性があります。詳細については、「」を参照してくださいTroubleshooting

    次のコマンドを実行して、[] を手動でデプロイすることもできます。AWS IoT GreengrassCLI をデバイスに追加します。

    • 置換リージョンと AWS リージョン を使用します。同じ AWS リージョン を設定するために使用したAWS CLIデバイスで。

    • 置換account-id側の AWS アカウント ID。

    • 置換マイグリーングラススコアをコアデバイスの名前に置き換えます。

    Linux, macOS, or Unix
    aws greengrassv2 create-deployment \ --target-arn "arn:aws:iot:region:account-id:thing/MyGreengrassCore" \ --components '{ "aws.greengrass.Cli": { "componentVersion": "2.3.0" } }'
    Windows (CMD)
    aws greengrassv2 create-deployment ^ --target-arn "arn:aws:iot:region:account-id:thing/MyGreengrassCore" ^ --components "{\"aws.greengrass.Cli\":{\"componentVersion\":\"2.3.0\"}}"
    Windows (PowerShell)
    aws greengrassv2 create-deployment ` --target-arn "arn:aws:iot:region:account-id:thing/MyGreengrassCore" ` --components '{\"aws.greengrass.Cli\":{\"componentVersion\":\"2.3.0\"}}'
    ヒント

    追加することができます/greengrass/v2/bin側のPATH実行する環境変数greengrass-cliを絶対パスなしで使用します。

  7. ソフトウェアをシステムサービスとしてインストールした場合は、インストーラによってソフトウェアが実行されます。それ以外の場合は、ソフトウェアを実行する必要があります。インストーラがソフトウェアをシステムサービスとしてセットアップしているかどうかを確認するには、インストーラの出力で次の行を探します。

    Successfully set up Nucleus as a system service

    このメッセージが表示されない場合は、次の手順を実行してソフトウェアを実行します。

    1. 以下のコマンドを実行して、ソフトウェアを実行します。

      sudo /greengrass/v2/alts/current/distro/bin/loader

      ソフトウェアが正常に起動すると、次のメッセージが出力されます。

      Launched Nucleus successfully.
    2. 現在のターミナルセッションを開いたままにして、AWS IoT GreengrassCore ソフトウェアが実行中です。開発用コンピューターで次のコマンドを実行して、コアデバイス上で追加のコマンドを実行するために使用できる 2 番目の SSH セッションを開きます。置換usernameをサインインするユーザーの名前に置き換え、Pi-ip-addressデバイスの IP アドレスに置き換えます。

      ssh username@pi-ip-address

    Greengrass システムサービスと対話する方法の詳細については、」設定AWS IoT Greengrassシステムサービスとして

-AWS IoT Greengrassコアソフトウェアとローカル開発ツールは、お使いのデバイス上で実行されます。次に、ハローワールドを開発することができますAWS IoT Greengrassコンポーネントにインストールします。

最初のコンポーネントを作成します。

コンポーネントは、上で動作するソフトウェアモジュールですAWS IoT Greengrassコアデバイス。コンポーネントを使用すると、Greengrass コアデバイス間で再利用できる、個別の構成要素として複雑なアプリケーションを作成および管理することができます。すべてのコンポーネントは、recipeおよびアーティファクト

  • レシピ

    すべてのコンポーネントには、メタデータを定義するレシピファイルが含まれています。レシピでは、コンポーネントの設定パラメータ、コンポーネントの依存関係、ライフサイクル、プラットフォームの互換性も指定します。コンポーネントのライフサイクルは、コンポーネントをインストール、実行、シャットダウンするコマンドを定義します。詳細については、「」を参照してくださいAWS IoT Greengrassコンポーネントレシピのリファレンス

    レシピはJSONまたはYAMLの形式で設定。

  • アーティファクト

    コンポーネントは、コンポーネントのバイナリである任意の数のアーティファクトを持つことができます。アーティファクトには、スクリプト、コンパイル済みコード、静的リソース、およびコンポーネントが消費するその他のファイルを含めることができます。コンポーネントは、コンポーネントの依存関係からアーティファクトを消費することもできます。

とAWS IoT Greengrassを使用すると、Greengrass コアデバイス上でコンポーネントを開発およびテストできます。 AWS クラウド 。コンポーネントを完成したら、AWS IoT Greengrassをクリックして、他のデバイスに展開します。詳細については、「」を参照してください管理AWS IoT Greengrassコンポーネント

このセクションでは、基本的な Hello World コンポーネントを作成および実行する方法について説明します。

Hello World コンポーネントを作成するには

  1. Greengrass コアデバイスで以下のコマンドを実行して、AWS IoT Greengrassインストールフォルダをローカル開発に使用します。置換〜/Greengrasscoreをインストールフォルダへのパスに置き換えます。

    cd ~/GreengrassCore
  2. AWS IoT Greengrassは、コンポーネントのレシピとアーティファクトが別々のフォルダにあることを想定しています。

    以下のコマンドを実行して、コンポーネントレシピのフォルダを作成します。

    mkdir recipes
  3. 次のコマンドを実行して、レシピファイルを作成して、テキストエディタで開きます。

    JSON
    nano recipes/com.example.HelloWorld-1.0.0.json
    YAML
    nano recipes/com.example.HelloWorld-1.0.0.yaml

    ファイルに次のレシピを貼り付けます。

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py '{configuration:/Message}'" } } ] }
    YAML
    --- RecipeFormatVersion: 2020-01-25 ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: Run: | python3 -u {artifacts:path}/hello_world.py '{configuration:/Message}'

    このレシピのComponentConfigurationセクションは、パラメータMessageデフォルトでworld。-Manifestsセクションは、マニフェストです。これは、プラットフォームのライフサイクル命令とアーティファクトのセットです。たとえば、複数のマニフェストを定義して、さまざまなプラットフォームに異なるインストール手順を指定できます。マニフェストでは、Lifecycleセクションは、Greengrass コアデバイスに Hello World スクリプトを実行するよう指示します。Messageパラメータ値を引数として使用します。

  4. コンポーネントアーティファクトのフォルダを作成するには、次のコマンドを実行します。

    mkdir -p artifacts/com.example.HelloWorld/1.0.0
    重要

    アーティファクトのフォルダのパスには、次の形式を使用する必要があります。レシピに指定したコンポーネント名とバージョンを含めます。

    artifacts/componentName/componentVersion/
  5. Python スクリプトアーティファクトファイルを作成して、それをテキストエディタで開きます。

    nano artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    次の Python スクリプトをファイルに貼り付けます。

    import sys import datetime message = "Hello, %s! Current time: %s." % (sys.argv[1], datetime.datetime.now()) # Print the message to stdout. print(message) # Append the message to the log file. with open('/tmp/Greengrass_HelloWorld.log', 'a') as f: print(message, file=f)

    この Python スクリプトは、hello メッセージと現在の時刻を/tmp/Greengrass_HelloWorld.log

  6. ローカルのAWS IoT GreengrassCLI を使用して、Greengrass コアデバイス上のコンポーネントを管理します。

    以下のコマンドを実行して、コンポーネントを [] にデプロイします。AWS IoT Greengrassコア。置換/greengrass/v2側のAWS IoT Greengrass V2ルートフォルダに移動し、〜/Greengrasscore側のAWS IoT Greengrass V2インストールフォルダを開きます。

    sudo /greengrass/v2/bin/greengrass-cli deployment create \ --recipeDir ~/GreengrassCore/recipes \ --artifactDir ~/GreengrassCore/artifacts \ --merge "com.example.HelloWorld=1.0.0"

    このコマンドは、レシピを使用するコンポーネントをrecipesで、Python スクリプトをartifacts。---mergeオプションは、指定したコンポーネントとバージョンを追加または更新します。

  7. Hello World コンポーネントが実行され、メッセージをログに記録するには、次のコマンドを実行します。

    tail -f /tmp/Greengrass_HelloWorld.log

    次の例に示すようなメッセージが表示されます。

    Hello, world! Current time: 2020-11-30 17:48:59.153933.
    注記

    そのファイルにtailコマンドは、ファイルが存在しないことを示し、ローカル展開がまだ完了していない可能性があります。ファイルが 15 秒以内に存在しない場合は、デプロイが失敗する可能性があります。これは、レシピが有効でない場合などに発生します。次のコマンドを実行して、AWS IoT GreengrassCore ログファイル。このファイルには、Greengrass コアデバイスのデプロイメントサービスからのログが含まれます。

    sudo tail -f /greengrass/v2/logs/greengrass.log

    Hello World コンポーネントのログファイルを表示することもできます。

    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log

    詳細については、「」を参照してくださいTroubleshooting

  8. ローカルコンポーネントを変更して、コードを反復してテストします。

    次のコマンドを実行してhello_world.py

    nano artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  9. 5 行目に次のコードを追加して、AWS IoT GreengrassCore ログ。

    message += " Greetings from your first Greengrass component."

    -hello_world.pyスクリプトは、次の内容を持つはずです。

    import sys import datetime message = "Hello, %s! Current time: %s." % (sys.argv[1], datetime.datetime.now()) message += " Greetings from your first Greengrass component." # Print the message to stdout. print(message) # Append the message to the log file. with open('/tmp/Greengrass_HelloWorld.log', 'a') as f: print(message, file=f)
  10. 以下のコマンドを実行して、変更内容でコンポーネントを更新します。

    sudo /greengrass/v2/bin/greengrass-cli deployment create \ --recipeDir ~/GreengrassCore/recipes \ --artifactDir ~/GreengrassCore/artifacts \ --merge "com.example.HelloWorld=1.0.0"

    このコマンドは、最新の Hello World アーティファクトをAWS IoT GreengrassCore ランタイムの。

  11. 以下のコマンドを実行して、コンポーネントを再起動します。コンポーネントを再起動すると、コアデバイスは最新の変更を使用します。

    sudo /greengrass/v2/bin/greengrass-cli component restart \ --names "com.example.HelloWorld"
  12. ログを再度チェックして、Hello World コンポーネントが新しいメッセージを出力することを確認します。

    tail -f /tmp/Greengrass_HelloWorld.log

    次の例に示すようなメッセージが表示されます。

    Hello, world! Current time: 2020-11-30 17:48:59.153933. Greetings from your first Greengrass component.
  13. コンポーネントの設定パラメータを更新して、異なる設定をテストできます。コンポーネントをデプロイするときは、設定の更新で、コアデバイス上でコンポーネントの設定を変更する方法を定義します。デフォルト値にリセットする設定値と、コアデバイスにマージする新しい設定値を指定できます。詳細については、「」を参照してくださいコンポーネント設定の更新

    次の作業を行います。

    1. という名前のファイルを作成します。hello-world-config-update.jsonに設定更新を含める必要があります。

      nano hello-world-config-update.json
    2. ファイルに次の JSON オブジェクトをコピーします。この JSON オブジェクトは、値をマージする設定の更新を定義します。friendMessageパラメーターを使用して、その値を更新します。この設定更新では、リセットする値は指定されていません。リセットする必要はありません。Messageパラメーターは、マージ更新によって既存の値が置き換えられるためです。

      { "com.example.HelloWorld": { "MERGE": { "Message": "friend" } } }
    3. 次のコマンドを実行して、構成更新を Hello World コンポーネントに展開します。

      sudo /greengrass/v2/bin/greengrass-cli deployment create \ --merge "com.example.HelloWorld=1.0.0" \ --update-config hello-world-config-update.json
    4. ログを再度チェックして、Hello World コンポーネントが新しいメッセージを出力することを確認します。

      tail -f /tmp/Greengrass_HelloWorld.log

      次の例に示すようなメッセージが表示されます。

      Hello, friend! Current time: 2020-11-30 17:48:59.153933. Greetings from your first Greengrass component.
  14. コンポーネントのテストが完了したら、コアデバイスからコンポーネントを取り外します。次のコマンドを実行します。

    sudo /greengrass/v2/bin/greengrass-cli deployment create --remove="com.example.HelloWorld"
    重要

    このステップは、コンポーネントをAWS IoT Greengrass。それ以外の場合、ローカルデプロイメントでコンポーネントの異なるバージョンが指定されているため、デプロイメントはバージョン互換性エラーで失敗します。

    次のコマンドを実行して、[] を確認します。com.example.HelloWorldコンポーネントが、デバイス上のコンポーネントのリストに表示されません。

    sudo /greengrass/v2/bin/greengrass-cli component list

Hello World コンポーネントが完成しました。これで、AWS IoT Greengrassサービス。次に、コンポーネントをデプロイできます。AWS IoT Greengrassコアデバイス。

コンポーネントをアップロードする

コンポーネントを終了したら、そのコンポーネントをAWS IoT Greengrassサービスの AWS クラウド 。AWS IoT Greengrassは、コンポーネントをホストするコンポーネント管理サービスを提供し、個々のデバイスまたはデバイス群に展開できるようにします。コンポーネントをアップロードするにはAWS IoT Greengrass以下のステップを実行します。

  • S3 バケットにコンポーネントアーティファクトをアップロードします。

  • コンポーネントレシピに、各アーティファクトの Amazon Simple Storage Service (Amazon S3) の URI を追加します。

  • でコンポーネントを作成します。AWS IoT Greengrassコンポーネントレシピから選択します。

このセクションでは、次の手順を [] で行います。AWS IoT Greengrassコアデバイスを使用して、Hello World コンポーネントをAWS IoT Greengrass。

Hello World コンポーネントをアップロードするには

  1. S3 バケットを AWS アカウント ホストにAWS IoT Greengrassコンポーネントのアーティファクト。コンポーネントをコアデバイスにデプロイすると、デバイスはコンポーネントのアーティファクトをバケットからダウンロードします。

    既存の S3 バケットを使用するか、次のコマンドを実行してバケットを作成できます。このコマンドは、 AWS アカウント ID および AWS リージョン 一意のバケット名を形成します。置換123456789012側の AWS アカウント ID およびリージョンと AWS リージョン をこのチュートリアルで使用します。

    aws s3 mb s3://greengrass-component-artifacts-123456789012-region

    コマンドは、要求が成功すると、次の情報を出力します。

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. コアデバイスが S3 バケット内のコンポーネントアーティファクトにアクセスできるようにします。各コアデバイスにはコアデバイスの IAM ロールと対話することを可能にするAWS IoTにログを送信する AWS クラウド 。このデバイスロールでは、デフォルトでは S3 バケットへのアクセスが許可されていないため、コアデバイスが S3 バケットからコンポーネントアーティファクトを取得できるようにするポリシーを作成してアタッチする必要があります。

    デバイスのロールで既に S3 バケットへのアクセスを許可されている場合は、このステップを省略できます。それ以外の場合は、次のように、アクセスを許可する IAM ポリシーを作成し、ロールにアタッチします。

    1. という名前のファイルを作成します。component-artifact-policy.jsonファイルに次の JSON をコピーします。このポリシーは、前のステップで作成した S3 バケット内のすべてのファイルへのアクセスを許可します。置換ドキュメントサンプルバケットを、使用するバケットの名前に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
    2. 次のコマンドを実行して、ポリシードキュメントからポリシーを作成します。component-artifact-policy.json

      aws iam create-policy \ --policy-name MyGreengrassV2ComponentArtifactPolicy \ --policy-document file://component-artifact-policy.json

      出力のポリシーのメタデータからポリシーの Amazon リソースネーム (ARN) をコピーします。この ARN を使用して、このポリシーをコアデバイスのロールに割り当てます。

    3. 以下のコマンドを実行して、Core デバイスのロールにポリシーをアタッチします。置換グリーングラスV2TokenExchangeRoleを実行したときに指定したロールの名前に置き換えます。AWS IoT GreengrassCore ソフトウェア。ポリシー ARN を、前のステップで書き留めたARN に置き換えます。

      aws iam attach-role-policy \ --role-name GreengrassV2TokenExchangeRole \ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

      コマンドに出力がない場合、コマンドは成功し、コアデバイスはこの S3 バケットにアップロードしたアーティファクトにアクセスできます。

  3. Hello World Python スクリプトアーティファクトを S3 バケットにアップロードします。次のコマンドを実行して、スクリプトがAWS IoT Greengrassコア。置換ドキュメントサンプルバケットS3 バケットの名前に置き換えます。

    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    コマンドはで始まる行を出力しますupload:リクエストが成功した場合。

  4. コンポーネントレシピにアーティファクトの Amazon S3 URI を追加します。Amazon S3 URI は、バケット名とバケット内のアーティファクトオブジェクトへのパスで構成されます。スクリプトアーティファクトの Amazon S3 URI は、前のステップでアーティファクトをアップロードする URI です。この URI は、次の例のようになります。置換ドキュメントサンプルバケットS3 バケットの名前に置き換えます。

    s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    レシピにアーティファクトを追加するには、Artifactsで、Amazon S3 URI を持つ構造体が含まれています。

    JSON
    "Artifacts": [ { "URI": "s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    以下のコマンドを実行して、レシピファイルを開きます。

    nano recipes/com.example.HelloWorld-1.0.0.json

    レシピにアーティファクトを追加します。レシピファイルは、次の例のようになります。

    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py '{configuration:/Message}'" }, "Artifacts": [ { "URI": "s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    YAML
    Artifacts: - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    以下のコマンドを実行して、レシピファイルを開きます。

    nano recipes/com.example.HelloWorld-1.0.0.yaml

    レシピにアーティファクトを追加します。レシピファイルは、次の例のようになります。

    --- RecipeFormatVersion: 2020-01-25 ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: Run: | python3 -u {artifacts:path}/hello_world.py '{configuration:/Message}' Artifacts: - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  5. でコンポーネントリソースを作成します。AWS IoT Greengrassレシピから。次のコマンドを実行して、バイナリファイルとして指定するレシピからコンポーネントを作成します。

    JSON
    aws greengrassv2 create-component-version \ --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
    YAML
    aws greengrassv2 create-component-version \ --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml

    リクエストが成功した場合、レスポンスは次の例のようになります。

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    のコピーarnをクリックして、次のステップでコンポーネントの状態をチェックします。

    注記

    また、Hello World コンポーネントをAWS IoT Greengrassconsole] のコンポーネントページで.

  6. コンポーネントが作成され、デプロイする準備ができていることを確認します。コンポーネントを作成すると、その状態はREQUESTED。その後、AWS IoT Greengrassは、コンポーネントがデプロイ可能であることを検証します。次のコマンドを実行して、コンポーネントのステータスを照会し、コンポーネントがデプロイ可能であることを確認できます。の置き換えarnを、前のステップで書き換えた ARN に置き換えます。

    aws greengrassv2 describe-component \ --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"

    コンポーネントが検証されると、応答は、コンポーネントの状態がDEPLOYABLE

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }

Hello World コンポーネントがAWS IoT Greengrass。このGreengrassコアデバイスまたは他のコアデバイスにデプロイし直すことができます。

コンポーネントをデプロイする

とAWS IoT Greengrassでは、コンポーネントを個々のデバイスまたはデバイスのグループに展開できます。コンポーネントをデプロイすると、AWS IoT Greengrassは、そのコンポーネントのソフトウェアを各ターゲットデバイスにインストールして実行します。展開するコンポーネントと、各コンポーネントに対して展開する構成更新を指定します。また、展開がターゲットとするデバイスに展開がどのように展開されるかを制御することもできます。詳細については、「」を参照してくださいデプロイAWS IoT Greengrassコンポーネントからデバイスへ

このセクションでは、Hello World コンポーネントをAWS IoT GreengrassCore デバイス。

Hello World コンポーネントをデプロイするには

  1. 開発用コンピュータで、というファイルを作成します。hello-world-deployment.jsonファイルに次の JSON をコピーします。このファイルは、デプロイするコンポーネントと設定を定義します。

    { "components": { "com.example.HelloWorld": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"Message\":\"universe\"}" } } } }

    この設定ファイルは、バージョン1.0.0前の手順で開発および公開した Hello World コンポーネントの -configurationUpdateJSON エンコードされた文字列でコンポーネント設定をマージすることを指定します。この構成更新プログラムは、Hello WorldMessageパラメータをuniverseは、この展開のデバイス用です。

  2. 次のコマンドを実行して、コンポーネントを Greengrass コアデバイスにデプロイします。個々のデバイスである Thing や、デバイスのグループである Thing グループにデプロイできます。置換マイグリーングラススコアの名前でAWS IoTコアデバイスのモノです。

    aws greengrassv2 create-deployment \ --target-arn "arn:aws:iot:region:account-id:thing/MyGreengrassCore" \ --cli-input-json file://hello-world-deployment.json

    コマンドは、次の例に示すような応答を出力します。

    { "deploymentId": "deb69c37-314a-4369-a6a1-3dff9fce73a9", "iotJobId": "b5d92151-6348-4941-8603-bdbfb3e02b75", "iotJobArn": "arn:aws:iot:region:account-id:job/b5d92151-6348-4941-8603-bdbfb3e02b75" }
  3. デプロイが正常に完了することを確認します。デプロイの完了までに数分かかることがあります。Hello World ログをチェックして、変更を確認します。Greengrass コアデバイスで、次のコマンドを実行します。

    tail -f /tmp/Greengrass_HelloWorld.log

    次の例に示すようなメッセージが表示されます。

    Hello, universe! Current time: 2020-11-30 18:18:59.153933. Greetings from your first Greengrass component.
    注記

    ログメッセージが変更されない場合は、展開が失敗したか、コアデバイスに到達しませんでした。これは、コアデバイスがインターネットに接続されていないか、S3 バケットからアーティファクトを取得する権限がない場合に発生します。コアデバイス上で以下のコマンドを実行して、AWS IoT Greengrassコアソフトウェアログファイル このファイルには、Greengrass コアデバイスのデプロイメントサービスからのログが含まれます。

    sudo tail -f /greengrass/v2/logs/greengrass.log

    詳細については、「」を参照してくださいTroubleshooting

これで、このチュートリアルは終了です。-AWS IoT Greengrassコアソフトウェアと Hello World コンポーネントがデバイス上で実行されます。また、Hello World コンポーネントはAWS IoT Greengrassを使用して他のデバイスに展開できます。このチュートリアルで学習するトピックの詳細については、以下を参照してください。