开发自定义配置插件 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

开发自定义配置插件

要开发自定义置备插件,请创建一个实现com.aws.greengrass.provisioning.DeviceIdentityInterace接口。您可以在项目中包含 Greengrass 核心 JAR 文件以访问此接口及其类。此接口定义输入插件配置并输出置备配置的方法。置备配置定义了系统的配置,Greengrass 核组件. 这些区域有:Amazon IoT Greengrass核心软件安装程序使用此配置配置来配置Amazon IoT Greengrass设备上的核心软件。

开发自定义置备插件后,将其构建为 JAR 文件,您可以将其提供给Amazon IoT Greengrass在安装过程中运行插件的核心软件安装程序。安装程序在安装程序使用的 JVM 中运行自定义配置插件,因此您可以创建仅包含插件代码的 JAR。

Requirements

要开发自定义置备插件,必须创建符合以下要求的 Java 类:

  • 使用com.aws.greengrass软件包中的软件包或com.aws.greengrass软件包。

  • 有一个没有任何参数的构造函数。

  • 实现DeviceIdentityInterface接口。有关更多信息,请参阅实现设备标识接口接口

实现设备标识接口接口

使用com.aws.greengrass.provisioning.DeviceIdentityInterface接口,请将 Greengrass 核心作为项目的依赖项添加到您的项目中。

在自定义置备插件项目中使用设备标识接口

  • 您可以将 Greengrass 核 JAR 文件添加为库,或者将 Greengrass 核添加为 Maven 依赖关系。请执行下列操作之一:

    • 要将 Greengrass 核 JAR 文件添加为库,请下载Amazon IoT Greengrass核心软件,其中包含 Greengrass 核 JAR。您可以从下载最新版本的Amazon IoT Greengrass来自以下位置的核心软件:

      您可以在 Greengrass 核心 JAR 文件(Greengrass.jar) 中的lib文件夹中。将此 JAR 文件添加到您的项目中。

    • 要在 Maven 项目中使用 Greengrass 原核心,请在nucleus中的工件com.aws.greengrass组中)。您还必须将greengrass-common存储库,因为 Greengrass 核心在 Maven 中央存储库中不可用。

      <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.4.0-SNAPSHOT</version> <scope>provided</scope> </dependency> </dependencies> </project>

设备标识接口接口

这些区域有:com.aws.greengrass.provisioning.DeviceIdentityInterface接口具有以下形态。

注意

您还可以在Greengrass 核源代码(位于 GitHub 上)。

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需要安装Amazon IoT Greengrass核心软件,但您可以返回null. 如果您的自定义配置插件返回null对于任何配置值,则必须在系统或核心配置中提供该值,当您创建config.yaml文件来提供给Amazon IoT GreengrassCore 软件安装程序。如果您的自定义置备插件为您在config.yaml,则安装程序将替换config.yaml替换为插件返回的值。