カスタムプロビジョニングプラグインを開発する - AWS IoT Greengrass

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

カスタムプロビジョニングプラグインを開発する

カスタムプロビジョニングプラグインを開発するには、com.aws.greengrass.provisioning.DeviceIdentityInterface インターフェイスを実装する Java クラスを作成します。Greengrass nucleus JAR ファイルをプロジェクトに含めて、このインターフェイスとクラスにアクセスすることができます。このインターフェイスは、プラグイン設定を入力し、プロビジョニング設定を出力するメソッドを定義するためのものです。プロビジョニング設定では、システムと Greengrass nucleus コンポーネントの設定を定義します。AWS IoT Greengrass コアソフトウェアインストーラは、このプロビジョニング設定を使用して、デバイス上の AWS IoT Greengrass Core コアソフトウェアを設定します。

カスタムプロビジョニングプラグインを開発したら、JAR ファイルとして構築し、インストール中にプラグインを実行するために、AWS IoT Greengrass コアソフトウェアインストーラに提供します。インストーラは、インストーラが使用するものと同じ JVM でカスタムプロビジョニングプラグインを実行するため、プラグインコードのみが含まれた JAR を作成することができます。

注記

AWS IoT フリートプロビジョニングプラグインは、インストール中にフリートプロビジョニングを使用するため、DeviceIdentityInterface を実装します。フリートプロビジョニングプラグインはオープンソースであるため、ソースコードを確認して、プロビジョニングプラグインインターフェイスの使用方法例を見ることができます。詳細については、GitHub の「AWS IoT フリートプロビジョニングプラグイン」を参照してください。

要件

カスタムプロビジョニングプラグインを開発するには、次の要件を満たす Java クラスを作成する必要があります。

  • com.aws.greengrass パッケージ、または com.aws.greengrass パッケージ内のパッケージを使用します。

  • 引数を持たないコンストラクタが必要です。

  • DeviceIdentityInterface インターフェイスを実装します。詳細については、「DeviceIdentityInterface インターフェイスを実装する」を参照してください。

DeviceIdentityInterface インターフェイスを実装する

カスタムプラグインで com.aws.greengrass.provisioning.DeviceIdentityInterface インターフェースを使用するには、Greengrass nucleus をプロジェクトの依存関係として追加します。

カスタムプロビジョニングプラグインプロジェクトで DeviceIdentityInterface を使用するには
  • Greengrass nucleus JAR ファイルをライブラリとして追加するか、Greengrass nucleus を Maven の依存関係として追加できます。次のいずれかを実行します。

    • Greengrass nucleus JAR ファイルをライブラリとして追加するには、Greengrass nucleus JAR を含む AWS IoT Greengrass コアソフトウェアをダウンロードします。AWS IoT Greengrass コアソフトウェアの最新バージョンを次の場所からダウンロードできます。

      Greengrass nucleus JAR ファイル (Greengrass.jar) は、ZIP ファイル内の lib フォルダにあります。この JAR ファイルをプロジェクトに追加します。

    • Maven プロジェクトで Greengrass nucleus を使用するには、com.aws.greengrass グループ内の nucleus アーティファクトに依存関係を追加します。また、Greengrass nucleus は Maven Central リポジトリでは利用できないため、greengrass-common レポジトリも追加する必要があります。

      <project ...> ... <repositories> <repository> <id>greengrass-common</id> <name>greengrass common</name> <url>https://d2jrmugq4soldf.cloudfront.net/snapshots</url> </repository> </repositories> ... <dependencies> <dependency> <groupId>com.aws.greengrass</groupId> <artifactId>nucleus</artifactId> <version>2.5.0-SNAPSHOT</version> <scope>provided</scope> </dependency> </dependencies> </project>

DeviceIdentityInterface インターフェイス

com.aws.greengrass.provisioning.DeviceIdentityInterface インターフェイスには、次のシェイプがあります。

注記

これらのクラスは、GitHub にある Greengrass nucleus source codecom.aws.greengrass.provisioning package でも確認できます。

public interface com.aws.greengrass.provisioning.DeviceIdentityInterface { ProvisionConfiguration updateIdentityConfiguration(ProvisionContext context) throws RetryableProvisioningException, InterruptedException; // Return the name of the plugin. String name(); } com.aws.greengrass.provisioning.ProvisionConfiguration { SystemConfiguration systemConfiguration; NucleusConfiguration nucleusConfiguration } com.aws.greengrass.provisioning.ProvisionConfiguration.SystemConfiguration { String certificateFilePath; String privateKeyPath; String rootCAPath; String thingName; } com.aws.greengrass.provisioning.ProvisionConfiguration.NucleusConfiguration { String awsRegion; String iotCredentialsEndpoint; String iotDataEndpoint; String iotRoleAlias; } com.aws.greengrass.provisioning.ProvisioningContext { Map<String, Object> parameterMap; String provisioningPolicy; // The policy is always "PROVISION_IF_NOT_PROVISIONED". } com.aws.greengrass.provisioning.exceptions.RetryableProvisioningException {}

SystemConfigurationNucleusConfiguration の各設定値は、AWS IoT Greengrass コアソフトウェアのインストールに必要ですが、null を戻すことができます。カスタムプロビジョニングプラグインがいずれかの設定値に null を返した場合、AWS IoT Greengrass コアソフトウェアのインストーラに提供する config.yaml ファイルを作成する際に、システムまたは Nucleus の設定にその値を提供する必要があります。config.yaml で定義したオプションに対して、カスタムプロビジョニングプラグインが NULL 以外の値を返した場合、インストーラは config.yaml の値をプラグインから返された値に置き換えます。