

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Entwickeln Sie benutzerdefinierte Provisioning-Plugins
<a name="develop-custom-provisioning-plugins"></a>

Um ein benutzerdefiniertes Provisioning-Plugin zu entwickeln, erstellen Sie eine Java-Klasse, die die Schnittstelle implementiert. `com.aws.greengrass.provisioning.DeviceIdentityInterface` Sie können die Greengrass Nucleus-JAR-Datei in Ihr Projekt aufnehmen, um auf diese Schnittstelle und ihre Klassen zuzugreifen. Diese Schnittstelle definiert eine Methode, die eine Plugin-Konfiguration eingibt und eine Provisioning-Konfiguration ausgibt. Die Provisioning-Konfiguration definiert Konfigurationen für das System und die [Greengrass Nucleus-Komponente](greengrass-nucleus-component.md). Das AWS IoT Greengrass Core-Softwareinstallationsprogramm verwendet diese Bereitstellungskonfiguration, um die AWS IoT Greengrass Core-Software auf einem Gerät zu konfigurieren.

Nachdem Sie ein benutzerdefiniertes Provisioning-Plugin entwickelt haben, erstellen Sie es als JAR-Datei, die Sie dem AWS IoT Greengrass Core-Softwareinstaller zur Verfügung stellen können, um Ihr Plugin während der Installation auszuführen. Das Installationsprogramm führt Ihr benutzerdefiniertes Provisioning-Plugin in derselben JVM aus, die das Installationsprogramm verwendet, sodass Sie eine JAR erstellen können, die nur Ihren Plugin-Code enthält.

**Anmerkung**  
Das [AWS IoT Fleet-Provisioning-Plugin implementiert die Option, Fleet Provisioning](fleet-provisioning.md) während der Installation `DeviceIdentityInterface` zu verwenden. Das Fleet Provisioning-Plugin ist Open Source, sodass Sie den Quellcode untersuchen können, um ein Beispiel für die Verwendung der Provisioning-Plug-in-Schnittstelle zu sehen. Weitere Informationen finden Sie im [AWS IoT Fleet Provisioning Plugin](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) unter. GitHub

**Topics**
+ [Voraussetzungen](#custom-provisioning-plugin-requirements)
+ [Implementieren Sie die DeviceIdentityInterface Schnittstelle](#implement-device-identity-interface)

## Voraussetzungen
<a name="custom-provisioning-plugin-requirements"></a>

Um ein benutzerdefiniertes Provisioning-Plugin zu entwickeln, müssen Sie eine Java-Klasse erstellen, die die folgenden Anforderungen erfüllt:
+ Verwendet das `com.aws.greengrass` Paket oder ein Paket innerhalb des `com.aws.greengrass` Pakets.
+ Hat einen Konstruktor ohne Argumente.
+ Implementiert die `DeviceIdentityInterface` Schnittstelle. Weitere Informationen finden Sie unter [Implementieren Sie die DeviceIdentityInterface Schnittstelle](#implement-device-identity-interface).

## Implementieren Sie die DeviceIdentityInterface Schnittstelle
<a name="implement-device-identity-interface"></a>

Um die `com.aws.greengrass.provisioning.DeviceIdentityInterface` Schnittstelle in Ihrem benutzerdefinierten Plugin zu verwenden, fügen Sie den Greengrass-Kern als Abhängigkeit zu Ihrem Projekt hinzu.

**Um das DeviceIdentityInterface in einem benutzerdefinierten Provisioning-Plugin-Projekt zu verwenden**
+ Sie können die Greengrass Nucleus JAR-Datei als Bibliothek oder den Greengrass Nucleus als Maven-Abhängigkeit hinzufügen. Führen Sie eine der folgenden Aktionen aus:
  + Um die Greengrass Nucleus JAR-Datei als Bibliothek hinzuzufügen, laden Sie die AWS IoT Greengrass Core-Software herunter, die die Greengrass Nucleus-JAR enthält. Sie können die neueste Version der AWS IoT Greengrass Core-Software von der folgenden Adresse herunterladen:
    + [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

    Sie finden die Greengrass Nucleus-JAR-Datei (`Greengrass.jar`) im `lib` Ordner in der ZIP-Datei. Fügen Sie diese JAR-Datei zu Ihrem Projekt hinzu.
  + Um den Greengrass-Kern in einem Maven-Projekt zu konsumieren, fügen Sie eine Abhängigkeit vom `nucleus` Artefakt in der Gruppe hinzu. `com.aws.greengrass` Sie müssen auch das `greengrass-common` Repository hinzufügen, da der Greengrass-Kern nicht im Maven Central Repository verfügbar ist.

    ```
    <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>
    ```

### Die Schnittstelle DeviceIdentityInterface
<a name="device-identity-interface-shape"></a>

Die `com.aws.greengrass.provisioning.DeviceIdentityInterface` Schnittstelle hat die folgende Form.

**Anmerkung**  
[Sie können diese Klassen auch im [com.aws.greengrass.provisioning Paket des Greengrass Nucleus-Quellcodes unter](https://github.com/aws-greengrass/aws-greengrass-nucleus/tree/main/src/main/java/com/aws/greengrass/provisioning) erkunden.](https://github.com/aws-greengrass/aws-greengrass-nucleus) 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 {}
```

Jeder Konfigurationswert in `SystemConfiguration` und `NucleusConfiguration` ist für die Installation der Core-Software erforderlich, Sie können jedoch zurückkehren. AWS IoT Greengrass `null` Wenn Ihr benutzerdefiniertes Provisioning-Plug-in `null` für einen beliebigen Konfigurationswert zurückgegeben wird, müssen Sie diesen Wert in der System- oder Nucleus-Konfiguration angeben, wenn Sie die `config.yaml` Datei für das AWS IoT Greengrass Core-Software-Installationsprogramm erstellen. Wenn Ihr benutzerdefiniertes Provisioning-Plugin für eine Option, in der Sie auch definiert haben, einen Wert ungleich Null zurückgibt`config.yaml`, ersetzt das Installationsprogramm den Wert in `config.yaml` durch den vom Plugin zurückgegebenen Wert.