翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS IoT Greengrass コンポーネントの作成
ローカル開発コンピュータまたは Greengrass コアデバイスでカスタム AWS IoT Greengrass コンポーネントを開発できます。 は、事前定義されたコンポーネントテンプレートとコミュニティコンポーネントからコンポーネントを作成、構築、公開するのに役立つ AWS IoT Greengrass Development Kit コマンドラインインターフェイス (GDK CLI) AWS IoT Greengrass を提供します。組み込みのシェルコマンドを実行して、コンポーネントを作成、ビルド、パブリッシュすることもできます。カスタム Greengrass コンポーネントを作成するには、次のオプションから選択します。
-
Greengrass Development Kit を使用する CLI
を使用してGDKCLI、ローカル開発コンピュータでコンポーネントを開発します。は、コンポーネントのソースコードをレシピとアーティファクトにGDKCLIビルドしてパッケージ化し、プライベートコンポーネントとして AWS IoT Greengrass サービスに発行できます。コンポーネントを公開URIsするときにコンポーネントのバージョンとアーティファクトを自動的に更新GDKCLIするように を設定できるため、毎回レシピを更新する必要はありません。を使用してコンポーネントを開発するにはGDKCLI、Greengrass Software Catalog のテンプレートまたはコミュニティコンポーネントから開始できます。詳細については、「AWS IoT Greengrass Development Kit Command-Line Interface」を参照してください。
-
組み込みのシェルコマンドを実行する
組み込みのシェルコマンドを実行して、ローカル開発コンピュータまたは Greengrass コアデバイス上でコンポーネントを開発できます。シェルコマンドを使用して、コンポーネントのソースコードをアーティファクトにコピーするか構築します。コンポーネントの新しいバージョンを作成するたびに、新しいコンポーネントバージョンで recipe を作成または更新する必要があります。コンポーネントをサービスに AWS IoT Greengrass 発行するときは、レシピ内の各コンポーネントアーティファクトURIに を更新する必要があります。
コンポーネントを作成する (GDK CLI)
このセクションの手順に従って、 GDK を使用してコンポーネントを作成および構築しますCLI。
Greengrass コンポーネントを開発するには (GDK CLI)
-
まだインストールしていない場合は、開発用コンピュータGDKCLIに をインストールします。詳細については、「AWS IoT Greengrass Development Kit Command-Line Interface をインストールまたは更新する」を参照してください。
-
コンポーネントフォルダを作成するフォルダに移動します。
-
ダウンロードするコンポーネントテンプレートまたはコミュニティコンポーネントを選択します。はテンプレートまたはコミュニティコンポーネントGDKCLIをダウンロードするため、機能的な例から開始できます。component list コマンドを使用して、利用可能なテンプレートとコミュニティコンポーネントのリストを取得します。
-
コンポーネントテンプレートをリスト表示するには、次のコマンドを実行します。レスポンスの各行には、テンプレートの名前とプログラミング言語が含まれています。
gdk component list --template
-
コミュニティコンポーネントをリスト表示するには、次のコマンドを実行します。
gdk component list --repository
-
-
がテンプレートまたはコミュニティコンポーネントGDKCLIをダウンロードするコンポーネントフォルダを作成して変更します。をコンポーネントの名前、またはこのコンポーネントフォルダを識別するのに役立つ別の名前
HelloWorld
に置き換えます。 -
テンプレートまたはコミュニティコンポーネントを現在のフォルダにダウンロードします。component init コマンドを使用します。
-
テンプレートからコンポーネントフォルダを作成するには、次のコマンドを実行します。をテンプレートの名前
HelloWorld
に置き換え、 をプログラミング言語の名前python
に置き換えます。gdk component init --template
HelloWorld
--languagepython
-
コミュニティコンポーネントからコンポーネントフォルダを作成するには、次のコマンドを実行します。をコミュニティコンポーネントの名前
ComponentName
に置き換えます。gdk component init --repository
ComponentName
注記
GDK CLI v1.0.0 を使用する場合は、空のフォルダでこのコマンドを実行する必要があります。は、テンプレートまたはコミュニティコンポーネントを現在のフォルダにGDKCLIダウンロードします。
GDK CLI v1.1.0 以降を使用する場合は、
--name
引数を指定して、 がテンプレートまたはコミュニティコンポーネントGDKCLIをダウンロードするフォルダを指定できます。この引数を使用する場合は、存在しないフォルダを指定します。によって フォルダGDKCLIが作成されます。この引数を指定しない場合、 は現在のフォルダGDKCLIを使用します。このフォルダは空である必要があります。 -
-
は、 という名前GDKCLIの設定ファイルからGDKCLI読み取り
gdk-config.json
、コンポーネントを構築して公開します。この設定ファイルは、コンポーネントフォルダのルートにあります。前の手順では、このファイルが作成されました。このステップでは、gdk-config.json
をコンポーネントに関する情報で更新します。以下の操作を実行します。-
テキストエディタで
gdk-config.json
を開きます。 -
(オプション) コンポーネントの名前を変更します。コンポーネント名は、
component
オブジェクトのキーです。 -
コンポーネントの作成者を変更します。
-
(オプション) コンポーネントのバージョンを変更します。次のいずれかを指定します。
-
NEXT_PATCH
– このオプションを選択すると、コンポーネントを公開するときに によってバージョンがGDKCLI設定されます。は、 AWS IoT Greengrass サービスのGDKCLIクエリを実行して、コンポーネントの最新の公開バージョンを特定します。次に、そのバージョンの後の次のパッチバージョンにバージョンを設定します。コンポーネントを公開したことがない場合、 はバージョン GDKCLIを使用します1.0.0
。このオプションを選択した場合、Greengrass CLI を使用して、 AWS IoT Greengrass Core ソフトウェアを実行するローカル開発コンピュータにコンポーネントをローカルにデプロイしてテストすることはできません。ローカルデプロイを有効にするには、代わりにセマンティックバージョンを指定する必要があります。
-
1.0.0
などのセマンティックバージョンです。セマンティックバージョンは、major.minor.patch という番号方式になっています。詳細については、「セマンティックバージョンの仕様」を参照してください。 コンポーネントをデプロイしてテストする Greengrass コアデバイスでコンポーネントを開発する場合は、このオプションを選択します。Greengrass CLIを使用してローカルデプロイを作成するには、特定のバージョンでコンポーネントを構築する必要があります。
-
-
(オプション) コンポーネントのビルド設定を変更します。ビルド設定は、 がコンポーネントのソースをアーティファクトにGDKCLIビルドする方法を定義します。次の
build_system
のオプションの中から選択します。-
zip
– コンポーネントのフォルダをZIPファイルにパッケージ化し、 をコンポーネントの唯一のアーティファクトとして定義します。次のタイプのコンポーネントには、このオプションを選択します。-
Python や など、解釈されたプログラミング言語を使用するコンポーネント JavaScript。
-
機械学習モデルやその他のリソースなどの、コード以外のファイルをパッケージ化するコンポーネント。
は、コンポーネントのフォルダをコンポーネントフォルダと同じ名前の zip ファイルにGDKCLI圧縮します。たとえば、コンポーネントフォルダの名前が の場合
HelloWorld
、 は という名前の zip ファイルGDKCLIを作成しますHelloWorld.zip
。注記
Windows デバイスでGDKCLIバージョン 1.0.0 を使用する場合、コンポーネントフォルダと zip ファイル名には小文字のみを使用する必要があります。
がコンポーネントのフォルダを GDK CLI zip ファイルに圧縮すると、次のファイルはスキップされます。
-
gdk-config.json
ファイル -
recipe ファイル (
recipe.json
またはrecipe.yaml
) -
ビルドフォルダ (
greengrass-build
など)
-
-
maven
-mvn clean package
コマンドを実行して、コンポーネントのソースをアーティファクト内にビルドします。Java コンポーネントなどの Mavenを使用するコンポーネントの場合は、このオプションを選択します。 Windows デバイスでは、この機能は GDK CLI v1.1.0 以降で使用できます。
-
gradle
-gradle build
コマンドを実行して、コンポーネントのソースをアーティファクト内にビルドします。Gradleを使用するコンポーネントの場合は、このオプションを選択します。この機能は v1.1.0 GDK CLI 以降で使用できます。 gradle
ビルドシステムは、ビルドファイルDSLとして Kotlin をサポートします。この機能は v1.2.0 GDK CLI 以降で使用できます。 -
gradlew
-gradlew
コマンドを実行して、コンポーネントのソースをアーティファクト内にビルドします。Gradle Wrapperを使用するコンポーネントの場合は、このオプションを選択します。 この機能は v1.2.0 GDK CLI 以降で使用できます。
-
custom
- カスタムコマンドを実行して、コンポーネントのソースを recipe とアーティファクトにビルドします。custom_build_command
パラメータでカスタムコマンドを指定します。
-
-
build_system
のcustom
を指定する場合は、build
オブジェクトにcustom_build_command
を追加します。custom_build_command
で、1 つの文字列または文字列のリストを指定します。各文字列が、コマンド内の単語になります。例えば、C++ コンポーネントのカスタムビルドコマンドを実行する場合は、["cmake", "--build", "build", "--config", "Release"]
を指定することができます。 -
GDK CLI v1.1.0 以降を使用する場合は、
--bucket
引数を指定して、 がコンポーネントのアーティファクトGDKCLIをアップロードする S3 バケットを指定できます。この引数を指定しない場合、 は名前が
、bucket
-region
-accountId
bucket
とregion
は で指定した値gdk-config.json
、accountId
は AWS アカウント ID である S3 バケットGDKCLIにアップロードします。バケットが存在しない場合、 はバケットGDKCLIを作成します。コンポーネントのパブリッシュ設定を変更します。以下の操作を実行します。
-
コンポーネントのアーティファクトをホストするために使用する S3 バケット名を指定します。
-
AWS リージョン がコンポーネントを発行する GDK CLI を指定します。
-
このステップを終了した時点で、
gdk-config.json
ファイルは、次の例のようになります。{ "component": { "com.example.PythonHelloWorld": { "author": "Amazon", "version": "NEXT_PATCH", "build": { "build_system" : "zip" }, "publish": { "bucket": "greengrass-component-artifacts", "region": "us-west-2" } } }, "gdk_version": "1.0.0" }
-
-
recipe.yaml
またはrecipe.json
という名のコンポーネント recipe ファイルを更新します。以下の操作を実行します。-
zip
ビルドシステムを使用するテンプレートまたはコミュニティコンポーネントをダウンロードした場合は、ZIP アーティファクト名がコンポーネントフォルダの名前と一致していることを確認してください。は、コンポーネントフォルダをコンポーネントフォルダと同じ名前の zip ファイルにGDKCLI圧縮します。recipe では、コンポーネントアーティファクトのリストと、ZIP アーティファクト内のファイルを使用するライフサイクルスクリプトの中に、ZIP アーティファクトの名前が含まれます。ZIP ファイル名がコンポーネントフォルダの名前と一致するようにArtifacts
およびLifecycle
の定義を更新します。次の recipe 例では、Artifacts
とLifecycle
の定義内の zip ファイルの名前が強調表示されています。 -
(オプション) コンポーネントの説明、デフォルト設定、アーティファクト、ライフサイクルスクリプト、およびプラットフォームサポートを更新します。詳細については、「AWS IoT Greengrass コンポーネントレシピリファレンス」を参照してください。
このステップを終了した時点で、recipe ファイルは、次の例のようになります。
-
-
Greengrass コンポーネントを開発して構築します。コンポーネントビルドコマンドは、コンポーネントフォルダにある
greengrass-build
フォルダに recipe とアーティファクトを作成します。以下のコマンドを実行します。gdk component build
コンポーネントをテストする準備ができたら、 GDK CLI を使用して サービスに発行します AWS IoT Greengrass 。その後に、コンポーネントを Greengrass コアデバイスにデプロイできます。詳細については、「コアデバイスにデプロイするコンポーネントをパブリッシュ」を参照してください。
コンポーネントを作成する (シェルコマンド)
このセクションの手順に従って、複数のコンポーネントのソースコードとアーティファクトが含まれる recipe とアーティファクトフォルダを作成します。
Greengrass コンポーネントを開発するには (シェルコマンド)
-
recipe とアーティファクトのサブフォルダを含むコンポーネントのフォルダを作成します。Greengrass コアデバイスで次のコマンドを実行してこれらのフォルダを作成し、コンポーネントフォルダに変更します。
~/greengrassv2
または を、ローカル開発に使用するフォルダへのパス%USERPROFILE%\greengrassv2
に置き換えます。 -
テキストエディタを使用して、コンポーネントのメタデータ、パラメータ、依存関係、ライフサイクル、プラットフォーム機能を定義する recipe ファイルを作成します。recipe ファイル名にコンポーネントのバージョンを含めるようにして、どの recipe がどのコンポーネントバージョンを反映しているのかを特定できるようにします。レシピには YAMLまたは JSON 形式を選択できます。
例えば、Linux ベースのシステムでは、次のコマンドを実行して GNU nano を使用してファイルを作成できます。
注記
AWS IoT Greengrass はコンポーネントにセマンティックバージョンを使用します。セマンティックバージョンは、major.minor.patch といった番号システムに準拠します。例えば、バージョン
1.0.0
は、コンポーネントの最初のメジャーリリースを表しています。詳細については、「セマンティックバージョンの仕様」を参照してください。 -
コンポーネントの recipe を定義します。詳細については、「AWS IoT Greengrass コンポーネントレシピリファレンス」を参照してください。
recipe は、次 Hello World の recipe 例のようになります。
この recipe は、Hello World Python スクリプトを実行します。次のスクリプト例のようになります。
import sys message = "Hello, %s!" % sys.argv[1] # Print the message to stdout, which Greengrass saves in a log file. print(message)
-
開発するコンポーネントバージョン用のフォルダを作成します。どのアーティファクトがどのコンポーネントバージョンのものなのかを識別できるように、各コンポーネントバージョンのアーティファクトに対して個別のフォルダを使用することをお勧めします。以下のコマンドを実行します。
重要
アーティファクトフォルダのパスには、次のフォーマットを使用する必要があります。recipe で指定したコンポーネント名とバージョンを含めてください。
artifacts/
componentName
/componentVersion
/ -
前のステップで作成したフォルダに、コンポーネントのアーティファクトを作成します。アーティファクトには、ソフトウェア、イメージ、およびその他のコンポーネントが使用するバイナリを含めることができます。
コンポーネントの準備ができたら、コンポーネントをテストします。