コンポーネント - AWS IoT Greengrass

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

コンポーネント

Greengrass コンポーネントの作成、ビルド、パブリッシュには、AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) の component コマンドを使用します。

初期化

コンポーネントテンプレートまたはコミュニティコンポーネントから Greengrass コンポーネントフォルダを初期化します。

GDK CLI は Greengrass Software Catalog からコミュニティコンポーネントを取得し、 AWS IoT Greengrassのコンポーネントテンプレートリポジトリからコンポーネントテンプレート GitHubを取得します。

注記

GDK CLI v1.0.0 を使用している場合は、このコマンドは空のフォルダで実行する必要があります。GDK CLI がテンプレートまたはコミュニティコンポーネントを現在のフォルダにダウンロードします。

GDK CLI v1.1.0 以降を使用する場合、--name 引数を使用して、GDK CLI がテンプレートまたはコミュニティコンポーネントをダウンロードするフォルダを指定することができます。この引数を使用する場合は、存在しないフォルダを指定します。GDK CLI によってフォルダが作成されます。この引数を指定しなかった場合、GDK CLI は現在のフォルダを使用しますが、このフォルダは空である必要があります。

コンポーネントが Zip ビルドシステムを使用する場合、GDK CLI は、コンポーネントのフォルダ内の特定のファイルを、コンポーネントフォルダと同じ名前の zip ファイルに圧縮します。例えば、コンポーネントフォルダの名前が HelloWorld の場合、GDK CLI は HelloWorld.zip という名前の zip ファイルを作成します。コンポーネント recipe では、zip アーティファクト名はコンポーネントフォルダの名前と一致する必要があります。Windows デバイスで GDK CLI バージョン 1.0.0 を使用する場合、コンポーネントフォルダと zip ファイル名には小文字のみを含める必要があります。

zip ビルドシステムを使用するテンプレートまたはコミュニティコンポーネントをテンプレートまたはコンポーネントとは異なる名前のフォルダに初期化する場合は、コンポーネント recipe で zip アーティファクト名を変更する必要があります。ZIP ファイル名がコンポーネントフォルダの名前と一致するように Artifacts および Lifecycle の定義を更新します。次の例では、ArtifactsLifecycle の定義内の zip ファイル名を強調表示しています。

JSON
{ ... "Manifests": [ { "Platform": { "os": "all" }, "Artifacts": [ { "URI": "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "run": "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}" } } ] }
YAML
--- ... Manifests: - Platform: os: all Artifacts: - URI: "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip" Unarchive: ZIP Lifecycle: run: "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}"
概要
$ gdk component init [--language] [--template] [--repository] [--name]
引数 (コンポーネントテンプレートから初期化)
  • -l--language - 指定したテンプレートに使用するプログラミング言語。

    --repository または --language および --template を指定する必要があります。

  • -t--template - ローカルコンポーネントプロジェクトに使用するコンポーネントテンプレート。利用可能なテンプレートを表示するには、list コマンドを使用します。

    --repository または --language および --template を指定する必要があります。

  • -n--name - (オプション) GDK CLI がコンポーネントを初期化するローカルフォルダの名前。存在しないフォルダを指定します。GDK CLI によってフォルダが作成されます。

    この機能は GDK CLI v1.1.0 以降で利用できます。

引数 (コミュニティコンポーネントから初期化)
  • -r--repository - ローカルフォルダにチェックアウトするコミュニティコンポーネント。利用可能なコミュニティコンポーネントを表示するには、list コマンドを使用します。

    --repository または --language および --template を指定する必要があります。

  • -n--name - (オプション) GDK CLI がコンポーネントを初期化するローカルフォルダの名前。存在しないフォルダを指定します。GDK CLI によってフォルダが作成されます。

    この機能は GDK CLI v1.1.0 以降で利用できます。

出力

次の例は、このコマンドを実行して Python Hello World テンプレートからコンポーネントフォルダを初期化したときに生成される出力を示しています。

$ gdk component init -l python -t HelloWorld [2021-11-29 12:51:40] INFO - Initializing the project directory with a python component template - 'HelloWorld'. [2021-11-29 12:51:40] INFO - Fetching the component template 'HelloWorld-python' from Greengrass Software Catalog.

次の例は、このコマンドを実行してコミュニティコンポーネントからコンポーネントフォルダを初期化したときに生成される出力を示しています。

$ gdk component init -r aws-greengrass-labs-database-influxdb [2022-01-24 15:44:33] INFO - Initializing the project directory with a component from repository catalog - 'aws-greengrass-labs-database-influxdb'. [2022-01-24 15:44:33] INFO - Fetching the component repository 'aws-greengrass-labs-database-influxdb' from Greengrass Software Catalog.

buid (構築)

AWS IoT Greengrass サービスにパブリッシュできる recipe とアーティファクトにコンポーネントのソースを構築します。GDK CLI は、GDK CLI configuration file (GDK CLI 設定ファイル) で指定した gdk-config.json で構築システムを実行します。このコマンドは、gdk-config.json ファイルが存在するフォルダと同じフォルダで実行する必要があります。

このコマンドを実行すると、GDK CLI は、コンポーネントフォルダ内の greengrass-build フォルダに recipe とアーティファクトを作成します。GDK CLI は、recipe を greengrass-build/recipes フォルダに保存し、アーティファクトを greengrass-build/artifacts/componentName/componentVersion フォルダに保存します。

GDK CLI v1.1.0 以降を使用すると、コンポーネント recipe で S3 バケットには存在して、ローカルコンポーネントの構築フォルダには存在しないアーティファクトを指定できます。この機能を使用すると、機械学習モデルなどの大きなアーティファクトを有するコンポーネントを開発するときに、帯域幅の使用量を減らすことができます。

コンポーネントの構築後は、以下のいずれかの操作を実行すると Greengrass コアデバイス上でコンポーネントをテストできます。

  • AWS IoT Greengrass Core ソフトウェアの実行場所とは異なるデバイスで開発する場合、Greengrass コアデバイスにデプロイするには、コンポーネントをパブリッシュする必要があります。コンポーネントを AWS IoT Greengrass サービスにパブリッシュし、Greengrass コアデバイスにデプロイします。詳細については、「パブリッシュコマンド」および「デプロイの作成」を参照してください。

  • AWS IoT Greengrass Core ソフトウェアを実行しているデバイスと同じデバイスで開発する場合、コンポーネントを AWS IoT Greengrass サービスにデプロイするか、ローカルデプロイを作成してコンポーネントをインストールして実行することができます。ローカルデプロイを作成するには、Greengrass CLI を使用します。詳細については、「Greengrass コマンドラインインターフェイスローカルデプロイで AWS IoT Greengrass コンポーネントをテストする」を参照してください。ローカルデプロイを作成するときは、greengrass-build/recipes を recipe フォルダとして、greengrass-build/artifacts をアーティファクトフォルダとして使用します。

概要
$ gdk component build
引数

なし

出力

次の例は、このコマンドを実行したときに生成される出力を示しています。

$ gdk component build [2021-11-29 13:18:49] INFO - Getting project configuration from gdk-config.json [2021-11-29 13:18:49] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2021-11-29 13:18:49] INFO - Building the component 'com.example.PythonHelloWorld' with the given project configuration. [2021-11-29 13:18:49] INFO - Using 'zip' build system to build the component. [2021-11-29 13:18:49] WARNING - This component is identified as using 'zip' build system. If this is incorrect, please exit and specify custom build command in the 'gdk-config.json'. [2021-11-29 13:18:49] INFO - Zipping source code files of the component. [2021-11-29 13:18:49] INFO - Copying over the build artifacts to the greengrass component artifacts build folder. [2021-11-29 13:18:49] INFO - Updating artifact URIs in the recipe. [2021-11-29 13:18:49] INFO - Creating component recipe in 'C:\Users\MyUser\Documents\greengrass-components\python\HelloWorld\greengrass-build\recipes'.

公開

このコンポーネントを AWS IoT Greengrass サービスにパブリッシュします。このコマンドは、構築したアーティファクトを S3 バケットにアップロードし、recipe 内のアーティファクト URI を更新し、recipe からコンポーネントの新しいバージョンを作成します。GDK CLI は S3 バケットと、GDK CLI configuration file (GDK CLI 設定ファイル) の gdk-config.json で指定した AWS リージョンを使用します。このコマンドは、gdk-config.json ファイルが存在するフォルダと同じフォルダで実行する必要があります。

GDK CLI v1.1.0 以降を使用する場合、--bucket 引数を指定して、GDK CLI がコンポーネントのアーティファクトをアップロードする S3 バケットを指定します。この引数を指定しない場合、GDK CLI は名前が bucket-region-accountId である S3 バケットにアップロードします。ここでは、gdk-config.json で指定する値は bucketregion であり、accountId は AWS アカウント ID です。GDK CLI は、バケットが存在しない場合に作成します。

GDK CLI v1.2.0 以降を使用する場合には、--region パラメータを使用して、GDK CLI 設定ファイル内で指定されている AWS リージョン を上書きできます。--options パラメータを使用すると、追加のオプションを指定することも可能です。使用可能なオプションのリストについては、「Greengrass Development Kit CLI 設定ファイル」を参照してください。

このコマンドを実行すると、GDK CLI は、recipe で指定したバージョンでコンポーネントをパブリッシュします。NEXT_PATCH を指定した場合、GDK CLI は、まだ存在しない次のパッチバージョンを使用します。セマンティックバージョンは、major.minor.patch という番号方式になっています。詳細については、「セマンティックバージョンの仕様」を参照してください。

注記

GDK CLI v1.1.0 以降を使用する場合、このコマンドを実行すると、GDK CLI はコンポーネントが構築されているかどうかをチェックします。コンポーネントが構築されていない場合は、GDK CLI はコンポーネントをパブリッシュする前にコンポーネントを構築します。

概要
$ gdk component publish [--bucket] [--region] [--options]
引数
  • -b,--bucket - (オプション) GDK CLI がコンポーネントアーティファクトを公開する先の S3 バケットの名前を指定します。

    この引数を指定しない場合、GDK CLI は名前が bucket-region-accountId である S3 バケットにアップロードします。ここでは、gdk-config.json で指定する値は bucketregion であり、accountId は AWS アカウント ID です。GDK CLI は、バケットが存在しない場合に作成します。

    GDK CLI は、バケットが存在しない場合に作成します。

    この機能は GDK CLI v1.1.0 以降で利用できます。

  • -r--region – (オプション) コンポーネントを作成する際の、送り先となる AWS リージョン の名前を指定します。この引数は、GDK CLI 設定内にあるリージョン名を上書きしま

    この機能は GDK CLI v1.2.0 以降で利用できます。

  • -o--options (オプション) コンポーネントを公開するためのオプションのリストを指定します。この引数は、有効な JSON 文字列か、公開オプションが記載されている JSON ファイルへのファイルパスにする必要があります。この引数は、GDK CLI 設定内のオプションよりも優先されます。

    この機能は GDK CLI v1.2.0 以降で利用できます。

出力

次の例は、このコマンドを実行したときに生成される出力を示しています。

$ gdk component publish [2021-11-29 13:45:29] INFO - Getting project configuration from gdk-config.json [2021-11-29 13:45:29] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2021-11-29 13:45:29] INFO - Found credentials in shared credentials file: ~/.aws/credentials [2021-11-29 13:45:30] INFO - Publishing the component 'com.example.PythonHelloWorld' with the given project configuration. [2021-11-29 13:45:30] INFO - No private version of the component 'com.example.PythonHelloWorld' exist in the account. Using '1.0.0' as the next version to create. [2021-11-29 13:45:30] INFO - Uploading the component built artifacts to s3 bucket. [2021-11-29 13:45:30] INFO - Uploading component artifacts to S3 bucket: {bucket}. If this is your first time using this bucket, add the 's3:GetObject' permission to each core device's token exchange role to allow it to download the component artifacts. For more information, see https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html. [2021-11-29 13:45:30] INFO - Not creating an artifacts bucket as it already exists. [2021-11-29 13:45:30] INFO - Updating the component recipe com.example.PythonHelloWorld-1.0.0. [2021-11-29 13:45:30] INFO - Creating a new greengrass component com.example.PythonHelloWorld-1.0.0 [2021-11-29 13:45:30] INFO - Created private version '1.0.0' of the component in the account.'com.example.PythonHelloWorld'.

list

利用可能なコンポーネントテンプレートとコミュニティコンポーネントのリストを取得します。

GDK CLI は Greengrass Software Catalog からコミュニティコンポーネントを取得し、 AWS IoT Greengrassのコンポーネントテンプレートリポジトリからコンポーネントテンプレート GitHubを取得します。

このコマンドの出力を init コマンドにパスすることで、テンプレートとコミュニティコンポーネントからコンポーネントリポジトリを初期化できます。

概要
$ gdk component list [--template] [--repository]
引数
  • -t--template - (オプション) 利用可能なコンポーネントテンプレートを一覧表示するには、この引数を指定します。このコマンドは、各テンプレートの名前と言語を name-language の形式で出力します。たとえば、HelloWorld-python の場合、テンプレート名は HelloWorld そして言語は python になります。

  • -r--repository - (オプション) 利用可能なコミュニティコンポーネントリポジトリを一覧表示するには、この引数を指定します。

出力

次の例は、このコマンドを実行したときに生成される出力を示しています。

$ gdk component list --template [2021-11-29 12:29:04] INFO - Listing all the available component templates from Greengrass Software Catalog. [2021-11-29 12:29:04] INFO - Found '2' component templates to display. 1. HelloWorld-python 2. HelloWorld-java