

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á.

# Instale o software AWS IoT Greengrass principal com provisionamento personalizado de recursos
<a name="custom-provisioning"></a>

Esse recurso está disponível para a versão 2.4.0 e posterior do [componente de Greengrass nucleus](greengrass-nucleus-component.md).

O instalador do software AWS IoT Greengrass Core fornece uma interface Java que você pode implementar em um plug-in personalizado que provisiona AWS os recursos necessários. Você pode desenvolver um plug-in de provisionamento para usar certificados de cliente X.509 personalizados ou para executar etapas complexas de provisionamento não compatíveis com outros processos de instalação. Para obter mais informações, consulte [Usar seus próprios certificados cliente](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) no *Guia do desenvolvedor do AWS IoT Core *.

Para executar um plug-in de provisionamento personalizado ao instalar o software AWS IoT Greengrass Core, você cria um arquivo JAR que fornece ao instalador. O instalador executa o plug-in, e o plug-in retorna uma configuração de provisionamento que define os AWS recursos para o dispositivo principal do Greengrass. O instalador usa essas informações para configurar o software AWS IoT Greengrass Core no dispositivo. Para obter mais informações, consulte [Desenvolver plug-ins de provisionamento personalizados](develop-custom-provisioning-plugins.md).

**Importante**  <a name="install-greengrass-core-requirements-note"></a>
Antes de baixar o software AWS IoT Greengrass Core, verifique se seu dispositivo principal atende aos [requisitos](greengrass-nucleus-component.md#greengrass-v2-requirements) para instalar e executar o software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Pré-requisitos](#custom-provisioning-prerequisites)
+ [Configurar o ambiente do dispositivo](#set-up-device-environment)
+ [Baixe o software AWS IoT Greengrass Core](#download-greengrass-core-v2)
+ [Instale o software AWS IoT Greengrass Core](#run-greengrass-core-v2-installer-custom)
+ [Desenvolver plug-ins de provisionamento personalizados](develop-custom-provisioning-plugins.md)

## Pré-requisitos
<a name="custom-provisioning-prerequisites"></a>

Para instalar o software AWS IoT Greengrass Core com provisionamento personalizado, você deve ter o seguinte:
+ Um arquivo JAR para um plug-in de provisionamento personalizado que implementa o `DeviceIdentityInterface`. O plug-in de provisionamento personalizado deve retornar valores para cada parâmetro de configuração do sistema e do núcleo. Caso contrário, forneça esses valores no arquivo de configuração durante a instalação. Para obter mais informações, consulte [Desenvolver plug-ins de provisionamento personalizados](develop-custom-provisioning-plugins.md).

## Configurar o ambiente do dispositivo
<a name="set-up-device-environment"></a>

Siga as etapas nesta seção para configurar um dispositivo Linux ou Windows para usar como dispositivo principal do AWS IoT Greengrass .

### Configurar um dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**Para configurar um dispositivo Linux para AWS IoT Greengrass V2**

1. Instale o Java Runtime, que o software AWS IoT Greengrass Core exige para ser executado. Recomendamos que você use as versões de suporte de longo prazo do [Amazon Corretto](https://aws.amazon.com/corretto/) ou do [OpenJDK](https://openjdk.java.net/). A versão 8 ou superior é obrigatória. Os seguintes comandos mostram como instalar o OpenJDK no dispositivo.
   + Para distribuições com base em Debian ou em Ubuntu:

     ```
     sudo apt install default-jdk
     ```
   + Para distribuições com base em Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + Para Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + Para Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Quando a instalação for concluída, execute o seguinte comando para verificar se o Java é executado no dispositivo Linux.

   ```
   java -version
   ```

   O comando imprime a versão do Java que é executada no dispositivo. Por exemplo, em uma distribuição baseada em Debian, o resultado pode ser semelhante ao seguinte exemplo.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Opcional) Crie o usuário e o grupo padrão do sistema que executa componentes no dispositivo. Você também pode optar por permitir que o instalador do software AWS IoT Greengrass Core crie esse usuário e grupo durante a instalação com o argumento do `--component-default-user` instalador. Para obter mais informações, consulte [Argumentos de instalação](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Verifique se o usuário que executa o software AWS IoT Greengrass Core (normalmente`root`) tem permissão para executar `sudo` com qualquer usuário e qualquer grupo.

   1. Execute o seguinte comando para abrir o arquivo `/etc/sudoers`.

      ```
      sudo visudo
      ```

   1. Verifique se a permissão do usuário se parece com o seguinte exemplo.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. (Opcional) Para [executar funções do Lambda em contêineres](run-lambda-functions.md), habilite [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1 e habilite e monte os cgroups de *memória* e *dispositivos*. Se você não planeja executar funções do Lambda em contêineres, ignore esta etapa.

   Para habilitar essas opções de cgroups, inicialize o dispositivo com os seguintes parâmetros do kernel do Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Para mais informações sobre como visualizar e definir parâmetros do kernel para o dispositivo, consulte a documentação do sistema operacional e do carregador de inicialização. Siga as instruções para definir permanentemente os parâmetros do kernel.

1. Instale todas as outras dependências necessárias no dispositivo, conforme indicado na lista de requisitos em [Requisitos do dispositivo](greengrass-nucleus-component.md#greengrass-v2-requirements).

### Configurar um dispositivo Windows
<a name="set-up-windows-device-environment"></a>

**nota**  
Esse recurso está disponível para a versão 2.5.0 e posterior do [componente de Greengrass nucleus](greengrass-nucleus-component.md).<a name="set-up-windows-device-environment-procedure"></a>

**Para configurar um dispositivo Windows para AWS IoT Greengrass V2**

1. Instale o Java Runtime, que o software AWS IoT Greengrass Core exige para ser executado. Recomendamos que você use as versões de suporte de longo prazo do [Amazon Corretto](https://aws.amazon.com/corretto/) ou do [OpenJDK](https://openjdk.java.net/). A versão 8 ou superior é obrigatória.

1. Verifique se o Java está disponível na variável de sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) e, caso contrário, adicione. A LocalSystem conta executa o software AWS IoT Greengrass Core, então você deve adicionar Java à variável de sistema PATH em vez da variável de usuário PATH para seu usuário. Faça o seguinte:

   1. Pressione a tecla Windows para abrir o menu Iniciar.

   1. Digite **environment variables** para pesquisar as opções do sistema no menu Iniciar.

   1. Nos resultados da pesquisa do menu Iniciar, escolha **Editar as variáveis de ambiente do sistema** para abrir a janela **Propriedades do sistema**.

   1. Escolha **Variáveis de ambiente...** para abrir a janela **Variáveis de ambiente**.

   1. Em **Variáveis de Sistema**, selecione a variável **Path** e em seguida **Editar**. Na janela **Editar variável de ambiente**, você visualiza cada caminho em uma linha separada.

   1. Verifique se o caminho para a pasta `bin` da instalação do Java está presente. O arquivo pode ser semelhante ao seguinte exemplo.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Se a pasta `bin` da instalação do Java estiver ausente do **Path**, selecione **Novo** para adicioná-la e, em seguida, selecione **OK**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Abra o prompt de comando do Windows (`cmd.exe`) como um administrador.

1. <a name="set-up-windows-device-environment-create"></a>Crie o usuário padrão na LocalSystem conta no dispositivo Windows. *password*Substitua por uma senha segura.

   ```
   net user /add ggc_user password
   ```
**dica**  <a name="windows-password-expiration-tip"></a>
Dependendo da configuração do Windows, a senha do usuário pode ser definida para expirar em uma data futura. Para garantir que as aplicações Greengrass continuem operando, monitore quando a senha expira e atualize-a antes disso. Também é possível definir que a senha nunca expire.  
Para verificar quando um usuário e senha expiram, execute o comando a seguir.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Para definir que a senha de um usuário nunca expire, execute o seguinte comando.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Se você estiver usando o Windows 10 ou posterior, onde o [`wmic`comando está obsoleto](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic), execute o comando a seguir. PowerShell   

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Baixe e instale o [PsExecutilitário](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) da Microsoft no dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Use o PsExec utilitário para armazenar o nome de usuário e a senha do usuário padrão na instância do Credential Manager da LocalSystem conta. *password*Substitua pela senha do usuário que você definiu anteriormente.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Se **PsExec License Agreement** abrir, selecione **Accept** para concordar com a licença e execute o comando.
**nota**  
Em dispositivos Windows, a LocalSystem conta executa o núcleo Greengrass, e você deve usar o PsExec utilitário para armazenar as informações padrão do usuário na conta. LocalSystem O uso do aplicativo Credential Manager armazena essas informações na conta do Windows do usuário atualmente conectado, em vez da LocalSystem conta.

## Baixe o software AWS IoT Greengrass Core
<a name="download-greengrass-core-v2"></a>

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

**nota**  
Você pode baixar uma versão específica do software AWS IoT Greengrass Core no seguinte local. *version*Substitua pela versão a ser baixada.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Para baixar o software AWS IoT Greengrass Core**

1. <a name="installation-download-ggc-software-step"></a>Em seu dispositivo principal, baixe o software AWS IoT Greengrass Core para um arquivo chamado`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Ao fazer download desse software, você concorda com o [Contrato de licença do software do Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Opcional) Para verificar a assinatura do software do Greengrass nucleus
**nota**  
Esse atributo está disponível com o Greengrass nucleus versão 2.9.5 e posterior.

   1. Use o comando a seguir para verificar a assinatura do artefato do Greengrass nucleus:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      O nome do arquivo pode parecer diferente dependendo da versão do JDK que você instala. Substitua *`jdk17.0.6_10`* pela versão do JDK que você instalou.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      O nome do arquivo pode parecer diferente dependendo da versão do JDK que você instala. Substitua *`jdk17.0.6_10`* pela versão do JDK que você instalou.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. A invocação `jarsigner` produz uma saída que indica os resultados da verificação.

      1. Se o arquivo zip do Greengrass nucleus estiver assinado, a saída conterá a seguinte declaração:

         ```
         jar verified.
         ```

      1. Se o arquivo zip do Greengrass nucleus não estiver assinado, a saída conterá a seguinte declaração:

         ```
         jar is unsigned.
         ```

   1. Se você forneceu a opção `-certs` do Jarsigner junto com as opções `-verify` e `-verbose`, a saída também incluirá informações detalhadas do certificado do assinante.

1. <a name="installation-unzip-ggc-software-step"></a>Descompacte o software AWS IoT Greengrass Core em uma pasta no seu dispositivo. *GreengrassInstaller*Substitua pela pasta que você deseja usar.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Opcional) Execute o comando a seguir para ver a versão do software AWS IoT Greengrass Core.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**Importante**  <a name="installer-folder-2.4.0-warning"></a>
Se você instalar uma versão do núcleo do Greengrass anterior à v2.4.0, não remova essa pasta depois de instalar o software Core. AWS IoT Greengrass O software AWS IoT Greengrass Core usa os arquivos dessa pasta para ser executado.  
Se você baixou a versão mais recente do software, instale a versão 2.4.0 ou posterior e poderá remover essa pasta depois de instalar o software AWS IoT Greengrass Core.

## Instale o software AWS IoT Greengrass Core
<a name="run-greengrass-core-v2-installer-custom"></a>

Execute o instalador com argumentos que especificam as seguintes ações:
+ Instale a partir de um arquivo de configuração parcial que especifica o uso do plug-in de provisionamento personalizado para provisionar recursos. AWS O software AWS IoT Greengrass Core usa um arquivo de configuração que especifica a configuração de cada componente do Greengrass no dispositivo. O instalador cria um arquivo de configuração completo a partir do arquivo de configuração parcial que você fornece e dos AWS recursos que o plug-in de aprovisionamento personalizado cria.
+ <a name="install-argument-component-default-user"></a>Especifique o uso do usuário do sistema `ggc_user` para executar componentes de software no dispositivo principal. Em dispositivos Linux, esse comando também especifica o uso do grupo do sistema `ggc_group` e o instalador cria o usuário e o grupo do sistema para você.
+ <a name="install-argument-system-service"></a>Configure o software AWS IoT Greengrass Core como um serviço do sistema que é executado na inicialização. Em dispositivos Linux, isso requer o sistema init [Systemd](https://en.wikipedia.org/wiki/Systemd).
**Importante**  <a name="windows-system-service-requirement-important-note"></a>
Nos dispositivos principais do Windows, você deve configurar o software AWS IoT Greengrass Core como um serviço do sistema.

Para mais informações sobre os argumentos que podem ser especificados, consulte [Argumentos de instalação](configure-installer.md).

**nota**  
<a name="jvm-tuning-note"></a>Se você estiver executando AWS IoT Greengrass em um dispositivo com memória limitada, poderá controlar a quantidade de memória que o software AWS IoT Greengrass Core usa. Para controlar a alocação de memória, é possível definir as opções de tamanho do heap do JVM no parâmetro de configuração `jvmOptions` no componente do núcleo. Para obter mais informações, consulte [Controlar a alocação de memória com opções de JVM](configure-greengrass-core-v2.md#jvm-tuning).

**Para instalar o software AWS IoT Greengrass Core (Linux)**

1. <a name="installer-check-greengrass-core-software-version"></a>Verifique a versão do software AWS IoT Greengrass Core.
   + *GreengrassInstaller*Substitua pelo caminho para a pasta que contém o software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Use um editor de texto para criar um arquivo de configuração chamado `config.yaml` para fornecer ao instalador.

   <a name="nano-command-intro"></a>Por exemplo, em um sistema baseado em Linux, você pode executar o comando a seguir para usar o GNU nano para criar o arquivo.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copie o conteúdo YAML a seguir para o arquivo.

   ```
   ---
   system:
     rootpath: "/greengrass/v2"
     # The following values are optional. Return them from the provisioning plugin or set them here.
     # certificateFilePath: ""
     # privateKeyPath: ""
     # rootCaPath: ""
     # thingName: ""
   services:
     aws.greengrass.Nucleus:
       version: "2.17.0"
       configuration:
         # The following values are optional. Return them from the provisioning plugin or set them here.
         # awsRegion: ""
         # iotRoleAlias: ""
         # iotDataEndpoint: ""
         # iotCredEndpoint: ""
     com.example.CustomProvisioning:
       configuration:
         # You can specify configuration parameters to provide to your plugin.
         # pluginParameter: ""
   ```

   Faça o seguinte:
   + *2.17.0*Substitua pela versão do software AWS IoT Greengrass Core.
   + Substitua cada instância de `/greengrass/v2` pela pasta raiz do Greengrass.
   + (Opcional) Especifique os valores de configuração do sistema e do núcleo. Defina esses valores se seu plug-in de provisionamento não os fornecer.
   + (Opcional) Especifique os parâmetros de configuração a serem fornecidos ao seu plug-in de provisionamento.
**nota**  
Neste arquivo de configuração, você pode personalizar outras opções de configuração, como as portas e o proxy de rede a serem usados, conforme mostrado no exemplo a seguir. Para mais informações, consulte [Configuração do núcleo do Greengrass](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration).  

   ```
   ---
   system:
     rootpath: "/greengrass/v2"
     # The following values are optional. Return them from the provisioning plugin or set them here.
     # certificateFilePath: ""
     # privateKeyPath: ""
     # rootCaPath: ""
     # thingName: ""
   services:
     aws.greengrass.Nucleus:
       version: "2.17.0"
       configuration:
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "http://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
         # The following values are optional. Return them from the provisioning plugin or set them here.
         # awsRegion: ""
         # iotRoleAlias: ""
         # iotDataEndpoint: ""
         # iotCredEndpoint: ""
     com.example.CustomProvisioning:
       configuration:
         # You can specify configuration parameters to provide to your plugin.
         # pluginParameter: ""
   ```

1. Execute o instalador. Especifique `--trusted-plugin` para fornecer seu plug-in de provisionamento personalizado e especifique `--init-config` para fornecer o arquivo de configuração.
**nota**  
O Windows tem uma limitação de comprimento de caminho de 260 caracteres. Se você estiver usando o Windows, use uma pasta raiz como `C:\greengrass\v2` ou `D:\greengrass\v2` para manter os caminhos dos componentes do Greengrass abaixo do limite de 260 caracteres.
   + Substitua `/greengrass/v2` ou *C:\$1greengrass\$1v2* pela pasta raiz do Greengrass.
   + Substitua cada instância do *GreengrassInstaller* pela pasta em que você descompactou o instalador.
   + Substitua o caminho para o arquivo JAR do plug-in de provisionamento personalizado pelo caminho para o arquivo JAR do seu plug-in.

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin /path/to/com.example.CustomProvisioning.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --trusted-plugin /path/to/com.example.CustomProvisioning.jar ^
     --init-config ./GreengrassInstaller/config.yaml ^
     --component-default-user ggc_user ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --trusted-plugin /path/to/com.example.CustomProvisioning.jar `
     --init-config ./GreengrassInstaller/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**Importante**  <a name="windows-system-service-installer-argument-important-note"></a>
Nos dispositivos principais do Windows, você deve especificar `--setup-system-service true` a configuração do software AWS IoT Greengrass Core como um serviço do sistema.

   <a name="installer-setup-system-service-output-message"></a>Se você especificar `--setup-system-service true`, o instalador imprimirá `Successfully set up Nucleus as a system service` se ele configurou e executou o software como um serviço do sistema. Caso contrário, o instalador não emitirá nenhuma mensagem se instalar o software com êxito.
**nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
Não é possível usar o argumento `deploy-dev-tools` para implantar ferramentas de desenvolvimento local ao executar o instalador sem o argumento `--provision true`. Para informações sobre a implantação da CLI do Greengrass diretamente no dispositivo, consulte [Interface de linha de comando do Greengrass](gg-cli.md).

1. <a name="installer-verify-installation"></a>Verifique a instalação visualizando os arquivos na pasta raiz.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Se a instalação for bem-sucedida, a pasta raiz conterá várias pastas, como `config`, `packages` e `logs`.

<a name="install-greengrass-core-run-software"></a>Se você instalou o software AWS IoT Greengrass Core como um serviço do sistema, o instalador executa o software para você. Caso contrário, será preciso executar o software manualmente. Para obter mais informações, consulte [Execute o software AWS IoT Greengrass Core](run-greengrass-core-v2.md).

<a name="install-greengrass-core-next-steps-intro"></a>Para obter mais informações sobre como configurar e usar o software AWS IoT Greengrass, consulte o seguinte:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurar o software AWS IoT Greengrass principal](configure-greengrass-core-v2.md)
+ [Desenvolva AWS IoT Greengrass componentes](develop-greengrass-components.md)
+ [Implemente AWS IoT Greengrass componentes em dispositivos](manage-deployments.md)
+ [Interface de linha de comando do Greengrass](gg-cli.md)

# 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.