の開始方法AWS IoT Greengrass V2 - AWS IoT Greengrass

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

の開始方法AWS IoT Greengrass V2

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

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

  • Greengrass Core デバイスで 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、macOS、または Unix ライクな開発用コンピュータ。

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

  • Python3.5 以降デバイスにインストールされています。

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

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

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

    ヒント

    次のコマンドを実行して、のバージョンを確認できます。AWS CLI持っている。

    aws --version

    詳細については、「」を参照してください。のインストール、更新、アンインストールAWS CLIおよびの設定AWS CLI()AWS Command Line Interfaceユーザーガイド

    注記

    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(セキュアシェル)()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 IoTにログインし、ログを Amazon 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 GreengrassCore ソフトウェアでは、認証情報が保存または保存されません。

  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. GreenGrassV2IOTThingPolicy。名前 (名前)。AWS IoTポリシーで、Greengrass のコアデバイスがAWS IoTおよびAWS IoT Greengrass。そのファイルにAWS IoTポリシーが存在しない場合は、インストーラーによって許可されるAWS IoTポリシーにこの名前を付けます。ユースケースには、このポリシーのアクセス権限を制限することができます。詳細については、「最小限AWS IoTの ポリシーAWS IoT Greengrass V2コア・デバイス」を参照してください。

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

    8. グリーングラス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 \ --thing-policy-name GreengrassV2IoTThingPolicy \ --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.4.0" } }'
    Windows (CMD)
    aws greengrassv2 create-deployment ^ --target-arn "arn:aws:iot:region:account-id:thing/MyGreengrassCore" ^ --components "{\"aws.greengrass.Cli\":{\"componentVersion\":\"2.4.0\"}}"
    Windows (PowerShell)
    aws greengrassv2 create-deployment ` --target-arn "arn:aws:iot:region:account-id:thing/MyGreengrassCore" ` --components '{\"aws.greengrass.Cli\":{\"componentVersion\":\"2.4.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 Core デバイスのコンポーネントを管理します。

    次のコマンドを実行して、コンポーネントを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. 次のコマンドを実行して、コアデバイスのロールにポリシーをアタッチします。置換グリーングラス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 Core デバイスで、次のコマンドを実行します。

    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を使用して他のデバイスに展開できます。このチュートリアルで学習するトピックの詳細については、次のトピックを参照してください。