

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Sviluppa plugin di provisioning personalizzati
<a name="develop-custom-provisioning-plugins"></a>

Per sviluppare un plug-in di provisioning personalizzato, create una classe Java che implementa l'interfaccia. `com.aws.greengrass.provisioning.DeviceIdentityInterface` Puoi includere il file JAR Greengrass nucleus nel tuo progetto per accedere a questa interfaccia e alle sue classi. Questa interfaccia definisce un metodo che immette una configurazione di plugin e genera una configurazione di provisioning. La configurazione di provisioning definisce le configurazioni per il sistema e il componente [Greengrass](greengrass-nucleus-component.md) nucleus. Il programma di installazione del software AWS IoT Greengrass Core utilizza questa configurazione di provisioning per configurare il AWS IoT Greengrass software Core su un dispositivo.

Dopo aver sviluppato un plug-in di provisioning personalizzato, crealo come file JAR da fornire al programma di installazione del software AWS IoT Greengrass Core per eseguire il plug-in durante l'installazione. Il programma di installazione esegue il plug-in di provisioning personalizzato nella stessa JVM utilizzata dal programma di installazione, in modo da poter creare un JAR che contenga solo il codice del plug-in.

**Nota**  
Il [plug-in AWS IoT Fleet Provisioning implementa l'utilizzo del fleet provisioning](fleet-provisioning.md) durante l'`DeviceIdentityInterface`installazione. Il plug-in fleet provisioning è open source, quindi puoi esplorarne il codice sorgente per vedere un esempio di come utilizzare l'interfaccia del plug-in di provisioning. Per ulteriori informazioni, consulta il plug-in [AWS IoT Fleet Provisioning](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) su. GitHub

**Topics**
+ [Requisiti](#custom-provisioning-plugin-requirements)
+ [Implementa l'interfaccia DeviceIdentityInterface](#implement-device-identity-interface)

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

Per sviluppare un plug-in di provisioning personalizzato, è necessario creare una classe Java che soddisfi i seguenti requisiti:
+ Utilizza il `com.aws.greengrass` pacchetto o un pacchetto all'interno del `com.aws.greengrass` pacchetto.
+ Ha un costruttore senza argomenti.
+ Implementa l'interfaccia. `DeviceIdentityInterface` Per ulteriori informazioni, consulta [Implementa l'interfaccia DeviceIdentityInterface](#implement-device-identity-interface).

## Implementa l'interfaccia DeviceIdentityInterface
<a name="implement-device-identity-interface"></a>

Per utilizzare l'`com.aws.greengrass.provisioning.DeviceIdentityInterface`interfaccia del tuo plugin personalizzato, aggiungi il nucleo Greengrass come dipendenza al tuo progetto.

**Per utilizzarlo DeviceIdentityInterface in un progetto di plug-in di provisioning personalizzato**
+ Puoi aggiungere il file JAR Greengrass nucleus come libreria o aggiungere il nucleo Greengrass come dipendenza Maven. Esegui una delle seguenti operazioni:
  + Per aggiungere il file JAR Greengrass nucleus come libreria, scaricate il software AWS IoT Greengrass Core, che contiene il file JAR Greengrass nucleus. È possibile scaricare la versione più recente del software AWS IoT Greengrass Core dal seguente percorso:
    + [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

    È possibile trovare il file JAR Greengrass nucleus (`Greengrass.jar`) nella `lib` cartella del file ZIP. Aggiungi questo file JAR al tuo progetto.
  + Per utilizzare il nucleo Greengrass in un progetto Maven, aggiungi una dipendenza dall'artefatto del gruppo. `nucleus` `com.aws.greengrass` È inoltre necessario aggiungere il `greengrass-common` repository, poiché il nucleo Greengrass non è disponibile nel Maven Central Repository.

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

### L'interfaccia DeviceIdentityInterface
<a name="device-identity-interface-shape"></a>

L'`com.aws.greengrass.provisioning.DeviceIdentityInterface`interfaccia ha la seguente forma.

**Nota**  
[Puoi anche esplorare queste classi nel [pacchetto com.aws.greengrass.provisioning del codice sorgente Greengrass](https://github.com/aws-greengrass/aws-greengrass-nucleus/tree/main/src/main/java/com/aws/greengrass/provisioning) nucleus on.](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 {}
```

Ogni valore di configurazione nella `SystemConfiguration` e `NucleusConfiguration` è necessario per installare il software Core, ma è possibile restituirlo. AWS IoT Greengrass `null` Se il plug-in di provisioning personalizzato restituisce `null` un valore di configurazione, è necessario fornire tale valore nella configurazione del sistema o del nucleo quando si crea il `config.yaml` file da fornire al programma di installazione del software AWS IoT Greengrass Core. Se il plug-in di provisioning personalizzato restituisce un valore diverso da nullo per un'opzione anch'essa definita in`config.yaml`, il programma di installazione sostituisce il valore in `config.yaml` con il valore restituito dal plug-in.