

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

# AWS IoT Greengrass コンポーネントの開発
<a name="develop-greengrass-components"></a>

Greengrass コアデバイスでコンポーネントの開発とテストを行うことができます。その結果、 とやり取りすることなく、 AWS IoT Greengrass ソフトウェアを作成して反復処理できます AWS クラウド。コンポーネントのバージョンが完了したら、クラウド AWS IoT Greengrass で にアップロードできるため、ユーザーとチームはフリート内の他のデバイスにコンポーネントをデプロイできます。コンポーネントをデプロイする方法の詳細については、「[AWS IoT Greengrass コンポーネントをデバイスにデプロイする](manage-deployments.md)」を参照してください。

すべてのコンポーネントは、*レシピ*と*アーティファクト*で設定されます。
+ <a name="component-recipe-definition"></a>**recipe**

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

  recipe は [JSON](https://en.wikipedia.org/wiki/JSON) または [YAML](https://en.wikipedia.org/wiki/YAML) 形式で定義できます。
+ <a name="component-artifacts-definition"></a>**アーティファクト**

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

AWS IoT Greengrass は、アプリケーションで使用してデバイスにデプロイできる構築済みのコンポーネントを提供します。例えば、ストリームマネージャーコンポーネントを使って様々な AWS サービスにデータをアップロードしたり、CloudWatch メトリクスコンポーネントを使って Amazon CloudWatch にカスタムメトリクスをパブリッシュしたりすることが可能です。詳細については、「[AWSが提供したコンポーネント](public-components.md)」を参照してください。

AWS IoT Greengrass は、Greengrass ソフトウェアカタログと呼ばれる Greengrass コンポーネントのインデックスをキュレートします。このカタログは、Greengrass コミュニティによって開発された Greengrass コンポーネントを追跡します。このカタログから、コンポーネントをダウンロード、変更、デプロイして Greengrass アプリケーションを作成できます。詳細については、「[コミュニティコンポーネント](greengrass-software-catalog.md)」を参照してください。

 AWS IoT Greengrass Core ソフトウェアは、コアデバイスで`ggc_group`設定した `ggc_user`や などのコンポーネントをシステムユーザーおよびグループとして実行します。これは、コンポーネントがそのシステムユーザーの権限を持っていることを意味します。ホームディレクトリを持たないシステムユーザーを使用した場合、コンポーネントはホームディレクトリを使用する実行コマンドやコードを使用できません。これは、Python パッケージをインストールする場合などに、`pip install some-library --user` コマンドを使用できないことを意味します。[入門チュートリアル](getting-started.md)に従ってコアデバイスを設定している場合、システムユーザーにはホームディレクトリがありません。コンポーネントを実行するユーザーやグループを設定する方法の詳細については、「[コンポーネントを実行するユーザーを設定する](configure-greengrass-core-v2.md#configure-component-user)」を参照してください。

**注記**  <a name="semver-note"></a>
<a name="semver-para"></a>AWS IoT Greengrass はコンポーネントにセマンティックバージョンを使用します。セマンティックバージョンは、major.minor.patch といった番号システムに準拠します。例えば、バージョン `1.0.0` は、コンポーネントの最初のメジャーリリースを表しています。詳細については、「[セマンティックバージョンの仕様](https://semver.org/)」を参照してください。

**Topics**
+ [コンポーネントライフサイクル](#component-lifecycle)
+ [コンポーネントタイプ](#component-types)
+ [AWS IoT Greengrass コンポーネントを作成する](create-components.md)
+ [ローカルデプロイで AWS IoT Greengrass コンポーネントをテストする](test-components.md)
+ [コアデバイスにデプロイするコンポーネントをパブリッシュ](publish-components.md)
+ [AWS サービスとやり取り](interact-with-aws-services.md)
+ [Docker コンテナの実行](run-docker-container.md)
+ [AWS IoT Greengrass コンポーネントレシピリファレンス](component-recipe-reference.md)
+ [コンポーネントの環境変数リファレンス](component-environment-variables.md)

## コンポーネントライフサイクル
<a name="component-lifecycle"></a>

*コンポーネントのライフサイクル*は、 AWS IoT Greengrass Core ソフトウェアがコンポーネントのインストールと実行に使用するステージを定義します。各ステージでは、スクリプトと、コンポーネントの動作を指定するその他の情報を定義します。たとえば、コンポーネントをインストールすると、 AWS IoT Greengrass Core ソフトウェアはそのコンポーネントの`install`ライフサイクルスクリプトを実行します。コアデバイス上のコンポーネントには、次のライフサイクルステータスがあります。
+ `NEW` - コンポーネントのレシピとアーティファクトはコアデバイスに読み込まれていますが、コンポーネントはインストールされていません。コンポーネントがこの状態になった後、コンポーネントは [install script](component-recipe-reference.md#install-lifecycle-definition) を実行します。
+ `INSTALLED` - コンポーネントがコアデバイスにインストールされています。コンポーネントは、[install script](component-recipe-reference.md#install-lifecycle-definition) を実行した後にこの状態に入ります。
+ `STARTING` - コアデバイス上でコンポーネントが開始されています。コンポーネントは、[startup script](component-recipe-reference.md#startup-lifecycle-definition) を実行したときにこの状態に入ります。起動に成功すると、コンポーネントは `RUNNING` 状態に入ります。
+ `RUNNING` - コアデバイス上でコンポーネントが実行されています。コンポーネントは、[run script](component-recipe-reference.md#run-lifecycle-definition) を実行したとき、またはスタートアップスクリプトからのアクティブなバックグラウンドプロセスがある場合に、この状態になります。
+ `FINISHED` - コンポーネントが正常に実行され、実行が完了しました。
+ `STOPPING` - コンポーネントは停止しています。コンポーネントは、[shutdown script](component-recipe-reference.md#shutdown-lifecycle-definition) を実行したときにこの状態に入ります。
+ `ERRORED` - コンポーネントでエラーが発生しました。コンポーネントがこの状態に入ると、[recover script](component-recipe-reference.md#recover-lifecycle-definition) を実行します。その後、コンポーネントは再起動して、通常の使用に戻ろうと試みます。コンポーネントが正常に実行されずに 3 回 `ERRORED` 状態になると、コンポーネントは `BROKEN` になります。
+ `BROKEN` - コンポーネントでエラーが複数回発生し、回復できません。修復するには、コンポーネントをもう一度デプロイする必要があります。
+ `UNINSTALLING` – コンポーネントは、完全に削除する前に[アンインストールスクリプト](component-recipe-reference.md#uninstall-lifecycle-definition)を実行しています。デプロイによってデバイスからコンポーネントが削除されると、コンポーネントはこの状態になります。この状態は、コンポーネントバージョンのアップグレードには適用されません。
+ `UNINSTALLED` – コンポーネントはアンインストールライフサイクルステップを完了し、デバイスから削除されます。

## コンポーネントタイプ
<a name="component-types"></a>

*コンポーネントタイプ*は、 AWS IoT Greengrass Core ソフトウェアがコンポーネントを実行する方法を指定します。コンポーネントには次のタイプがあります。
+ **Nucleus** (`aws.greengrass.nucleus`)

  Greengrass nucleus は、 AWS IoT Greengrass Core ソフトウェアの最小限の機能を提供するコンポーネントです。詳細については、「[Greengrass nucleus](greengrass-nucleus-component.md)」を参照してください。
+ **プラグイン** (`aws.greengrass.plugin`)

  Greengrass nucleus は nucleus と同じ Java 仮想マシン (JVM) で、プラグインコンポーネントを実行します。コアデバイス上のプラグインコンポーネントのバージョンが変更されると、nucleus は再起動します。プラグインコンポーネントをインストールして実行するには、Greengrass nucleus をシステムサービスとして実行するように設定する必要があります。詳細については、「[Greengrass nucleus をシステムサービスとして設定する](configure-greengrass-core-v2.md#configure-system-service)」を参照してください。

  が提供するいくつかのコンポーネント AWS はプラグインコンポーネントであり、Greengrass nucleus と直接インターフェイスできます。プラグインコンポーネントは Greengrass nucleus と同じログファイルを使用します。詳細については、「[AWS IoT Greengrass ログのモニタリング](monitor-logs.md)」を参照してください。
+ **ジェネリック** (`aws.greengrass.generic`)

  Greengrass nucleus は、コンポーネントがライフサイクルを定義している場合、ジェネリックコンポーネントのライフサイクルスクリプトを実行します。

  このタイプは、カスタムコンポーネントのデフォルトタイプです。
+ **Lambda** (`aws.greengrass.lambda`)

  Greengrass nucleus は、[Lambda ランチャーコンポーネント](lambda-launcher-component.md)を使用して Lambda 関数コンポーネントを実行します。

  Lambda 関数からコンポーネントを作成すると、コンポーネントはこのタイプになります。詳細については、「[AWS Lambda 関数を実行する](run-lambda-functions.md)」を参照してください。

**注記**  <a name="recipe-component-type-recommendation"></a>
コンポーネントの作成時に recipe. AWS IoT Greengrass sets でコンポーネントタイプを指定することはお勧めしません。