

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Desenvolver plug-ins de provisionamento personalizados
<a name="develop-custom-provisioning-plugins"></a>

Para desenvolver um plug-in de provisionamento personalizado, crie uma classe Java que implemente a interface `com.aws.greengrass.provisioning.DeviceIdentityInterface`. Você pode incluir o arquivo JAR do núcleo do Greengrass em seu projeto para acessar essa interface e as classes dela. Essa interface define um método que insere uma configuração de plug-in e gera uma configuração de provisionamento. A configuração de provisionamento define configurações para o sistema e o [componente do núcleo do Greengrass](greengrass-nucleus-component.md). O instalador do software AWS IoT Greengrass Core usa essa configuração de provisionamento para configurar o software AWS IoT Greengrass Core em um dispositivo.

Depois de desenvolver um plug-in de provisionamento personalizado, crie-o como um arquivo JAR que você pode fornecer ao instalador do software AWS IoT Greengrass Core para executar o plug-in durante a instalação. O instalador executa seu plug-in de provisionamento personalizado na mesma JVM que o instalador usa, para que você possa criar um JAR que contenha somente o código do plug-in.

**nota**  
O [plug-in de provisionamento de frota da AWS IoT](fleet-provisioning.md) implementa o `DeviceIdentityInterface` para usar o provisionamento de frota durante a instalação. O plug-in de provisionamento de frota é de código aberto, então você pode explorar seu código-fonte para ver um exemplo de como usar a interface do plug-in de provisionamento. Para obter mais informações, consulte o [plug-in de provisionamento de AWS IoT frota](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) ativado. GitHub

**Topics**
+ [Requisitos](#custom-provisioning-plugin-requirements)
+ [Implemente a DeviceIdentityInterface interface](#implement-device-identity-interface)

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

Para desenvolver um plug-in de provisionamento personalizado, você deve criar uma classe Java que atenda aos seguintes requisitos:
+ Usa o pacote `com.aws.greengrass` ou um pacote dentro do pacote `com.aws.greengrass`.
+ Tem um construtor sem argumentos.
+ Implementa a interface `DeviceIdentityInterface`. Para obter mais informações, consulte [Implemente a DeviceIdentityInterface interface](#implement-device-identity-interface).

## Implemente a DeviceIdentityInterface interface
<a name="implement-device-identity-interface"></a>

Para usar a interface `com.aws.greengrass.provisioning.DeviceIdentityInterface` em seu plug-in personalizado, adicione o núcleo do Greengrass como uma dependência ao seu projeto.

**Para usar o DeviceIdentityInterface em um projeto de plug-in de provisionamento personalizado**
+ Você pode adicionar o arquivo JAR do núcleo do Greengrass como uma biblioteca ou adicionar o núcleo do Greengrass como uma dependência do Maven. Execute um destes procedimentos:
  + Para adicionar o arquivo JAR do núcleo do Greengrass como uma biblioteca, baixe o software AWS IoT Greengrass Core, que contém o JAR do núcleo do Greengrass. Você pode baixar a versão mais recente do software AWS IoT Greengrass Core no seguinte local:
    + [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

    Você pode encontrar o arquivo JAR do núcleo do Greengrass (`Greengrass.jar`) na pasta `lib` do arquivo ZIP. Adicione esse arquivo JAR ao seu projeto.
  + Para consumir o núcleo do Greengrass em um projeto Maven, adicione uma dependência do artefato `nucleus` no grupo `com.aws.greengrass`. Você também deve adicionar o repositório `greengrass-common`, porque o núcleo do Greengrass não está disponível no Repositório Central do 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.5.0-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </project>
    ```

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

A interface `com.aws.greengrass.provisioning.DeviceIdentityInterface` tem o seguinte formato.

**nota**  
[Você também pode explorar essas classes no [pacote com.aws.greengrass.provisioning do código-fonte do núcleo Greengrass](https://github.com/aws-greengrass/aws-greengrass-nucleus/tree/main/src/main/java/com/aws/greengrass/provisioning) em.](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 {}
```

Cada valor de configuração no `SystemConfiguration` e `NucleusConfiguration` é necessário para instalar o software AWS IoT Greengrass Core, mas você pode retornar`null`. Se seu plug-in de provisionamento personalizado retornar `null` para qualquer valor de configuração, você deverá fornecer esse valor na configuração do sistema ou do núcleo ao criar o `config.yaml` arquivo a ser fornecido ao AWS IoT Greengrass instalador do software Core. Se seu plug-in de provisionamento personalizado retornar um valor não nulo para uma opção que você também define em `config.yaml`, o instalador substituirá o valor em `config.yaml` pelo valor retornado pelo plug-in.