

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Instale el software AWS IoT Greengrass principal con aprovisionamiento de recursos personalizado
<a name="custom-provisioning"></a>

Esta característica está disponible para la versión 2.4.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).

El instalador de software AWS IoT Greengrass Core proporciona una interfaz Java que puede implementar en un complemento personalizado que aprovisione AWS los recursos necesarios. Puede desarrollar un complemento de aprovisionamiento para usar certificados de cliente X.509 personalizados o ejecutar pasos de aprovisionamiento complejos que otros procesos de instalación no admiten. Para obtener más información, consulte [Crear sus propios certificados de cliente](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) en la *Guía para desarrolladores de AWS IoT Core *.

Para ejecutar un complemento de aprovisionamiento personalizado al instalar el software AWS IoT Greengrass Core, debe crear un archivo JAR que se proporciona al instalador. El instalador ejecuta el complemento y el complemento devuelve una configuración de aprovisionamiento que define los AWS recursos del dispositivo principal de Greengrass. El instalador usa esta información para configurar el software AWS IoT Greengrass principal en el dispositivo. Para obtener más información, consulte [Desarrollo de complementos de aprovisionamiento personalizados](develop-custom-provisioning-plugins.md).

**importante**  <a name="install-greengrass-core-requirements-note"></a>
Antes de descargar el software AWS IoT Greengrass Core, compruebe que su dispositivo principal cumpla los [requisitos](greengrass-nucleus-component.md#greengrass-v2-requirements) para instalar y ejecutar el software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Requisitos previos](#custom-provisioning-prerequisites)
+ [Configuración del entorno del dispositivo](#set-up-device-environment)
+ [Descargue el software AWS IoT Greengrass principal](#download-greengrass-core-v2)
+ [Instale el software principal AWS IoT Greengrass](#run-greengrass-core-v2-installer-custom)
+ [Desarrollo de complementos de aprovisionamiento personalizados](develop-custom-provisioning-plugins.md)

## Requisitos previos
<a name="custom-provisioning-prerequisites"></a>

Para instalar el software AWS IoT Greengrass Core con aprovisionamiento personalizado, debe disponer de lo siguiente:
+ Un archivo JAR para un complemento de aprovisionamiento personalizado que implementa la `DeviceIdentityInterface`. El complemento de aprovisionamiento personalizado debe devolver valores para cada parámetro de configuración del núcleo y del sistema. De lo contrario, debe proporcionar esos valores en el archivo de configuración durante la instalación. Para obtener más información, consulte [Desarrollo de complementos de aprovisionamiento personalizados](develop-custom-provisioning-plugins.md).

## Configuración del entorno del dispositivo
<a name="set-up-device-environment"></a>

Siga los pasos de esta sección para configurar un dispositivo Linux o Windows para usarlo como su dispositivo principal de AWS IoT Greengrass .

### Configuración de un dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

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

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior. Los siguientes comandos muestran cómo instalar OpenJDK en su dispositivo.
   + Para distribuciones basadas en Debian o en Ubuntu:

     ```
     sudo apt install default-jdk
     ```
   + Para distribuciones basadas en Red Hat:

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

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

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

   Cuando se complete la instalación, ejecute el siguiente comando para comprobar que Java se ejecuta en su dispositivo Linux.

   ```
   java -version
   ```

   El comando imprime la versión de Java que se ejecuta en el dispositivo. Por ejemplo, en una distribución basada en Debian, el resultado podría ser similar al siguiente ejemplo.

   ```
   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) Cree el usuario y el grupo predeterminado del sistema que ejecutan los componentes del dispositivo. También puede optar por permitir que el instalador del software AWS IoT Greengrass principal cree este usuario y grupo durante la instalación con el argumento del `--component-default-user` instalador. Para obtener más información, consulte [Argumentos del instalador](configure-installer.md).

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

1. Compruebe que el usuario que ejecuta el software AWS IoT Greengrass principal (normalmente`root`) tiene permiso para ejecutar `sudo` con cualquier usuario y grupo.

   1. Ejecute el siguiente comando para abrir el archivo `/etc/sudoers`.

      ```
      sudo visudo
      ```

   1. Compruebe que el permiso del usuario se parezca al siguiente ejemplo.

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

1. (Opcional) Para [ejecutar funciones de Lambda en contenedores](run-lambda-functions.md), debe habilitar la versión 1 de [cgroups](https://en.wikipedia.org/wiki/Cgroups), y habilitar y montar los cgroups de *memoria* y de *dispositivos*. Si no tiene previsto ejecutar funciones de Lambda en contenedores, puede omitir este paso.

   Para habilitar estas opciones de cgroups, arranque el dispositivo con los siguientes parámetros del kernel de Linux.

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

   Para obtener más información acerca de cómo ver y configurar los parámetros del kernel de su dispositivo, consulte la documentación del sistema operativo y del gestor de arranque. Siga las instrucciones para configurar permanentemente los parámetros del kernel.

1. Instale todas las demás dependencias necesarias en su dispositivo tal y como se indica en la lista de requisitos de [Requisitos de los dispositivos](greengrass-nucleus-component.md#greengrass-v2-requirements).

### Configuración de un dispositivo de Windows
<a name="set-up-windows-device-environment"></a>

**nota**  
Esta característica está disponible para la versión 2.5.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).<a name="set-up-windows-device-environment-procedure"></a>

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

1. Instale el motor de ejecución de Java, que el software AWS IoT Greengrass principal necesita para ejecutarse. Le recomendamos que utilice las versiones de compatibilidad a largo plazo de [Amazon Corretto](https://aws.amazon.com/corretto/) u [OpenJDK](https://openjdk.java.net/). Se requiere la versión 8 o posterior.

1. Compruebe si Java está disponible en la variable del sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) y agréguelo si no lo está. La LocalSystem cuenta ejecuta el software AWS IoT Greengrass principal, por lo que debe agregar Java a la variable de sistema PATH en lugar de a la variable de usuario PATH de su usuario. Haga lo siguiente:

   1. Pulse la tecla Windows para abrir el menú de inicio.

   1. Escriba **environment variables** para buscar las opciones del sistema en el menú de inicio.

   1. En los resultados de la búsqueda del menú de inicio, elija **Editar las variables de entorno del sistema** para abrir la ventana de **Propiedades del sistema**.

   1. Elija **Variables de entorno...** para abrir la ventana **Variables de entorno**.

   1. En **Variables del sistema**, elija **Ruta** y, luego, **Editar**. En la ventana **Editar variables de entorno**, puede ver cada ruta en una línea independiente.

   1. Compruebe si la ruta a la carpeta de la instalación de Java `bin` está presente. La ruta puede tener un aspecto similar al siguiente ejemplo.

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

   1. Si la carpeta de la instalación de Java `bin` no aparece en **Ruta**, elija **Nueva** para agregarla y, a continuación, pulse **Aceptar**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Abra el símbolo del sistema de Windows (`cmd.exe`) como administrador.

1. <a name="set-up-windows-device-environment-create"></a>Cree el usuario predeterminado en la LocalSystem cuenta del dispositivo Windows. *password*Sustitúyalo por una contraseña segura.

   ```
   net user /add ggc_user password
   ```
**sugerencia**  <a name="windows-password-expiration-tip"></a>
Según su configuración de Windows, es posible que la contraseña del usuario caduque en una fecha futura. Para garantizar que sus aplicaciones de Greengrass sigan funcionando, controle cuándo caduca la contraseña y actualícela antes de que caduque. También puede configurar la contraseña del usuario para que nunca caduque.  
Para comprobar cuándo caducan un usuario y su contraseña, ejecute el siguiente comando.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Para configurar la contraseña de un usuario para que no caduque nunca, ejecute el siguiente comando.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Si utilizas Windows 10 o una versión posterior, donde el [`wmic`comando está en desuso](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic), ejecuta el siguiente PowerShell comando.  

     ```
     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>Descargue e instale la [PsExecutilidad](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) de Microsoft en el dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilice la PsExec utilidad para almacenar el nombre de usuario y la contraseña del usuario predeterminado en la instancia de Credential Manager de la LocalSystem cuenta. *password*Sustitúyala por la contraseña de usuario que configuraste anteriormente.

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

   Si **PsExec License Agreement** se abre, elija **Accept** para aceptar la licencia y ejecute el comando.
**nota**  
En los dispositivos Windows, la LocalSystem cuenta ejecuta el núcleo de Greengrass y debe usar la PsExec utilidad para almacenar la información de usuario predeterminada en la LocalSystem cuenta. El uso de la aplicación Credential Manager almacena esta información en la cuenta de Windows del usuario que ha iniciado sesión actualmente, en lugar de en la LocalSystem cuenta.

## Descargue el software AWS IoT Greengrass principal
<a name="download-greengrass-core-v2"></a>

Puede descargar la última versión del software AWS IoT Greengrass Core desde la siguiente ubicación:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**nota**  
Puede descargar una versión específica del software AWS IoT Greengrass Core desde la siguiente ubicación. *version*Sustitúyala por la versión que se va a descargar.  

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

**Para descargar el software AWS IoT Greengrass principal**

1. <a name="installation-download-ggc-software-step"></a>En su dispositivo principal, descargue el software AWS IoT Greengrass Core en un archivo denominado`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>Al descargar este software, acepta el [acuerdo de licencia del software de 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) Verificación de la firma del software del núcleo de Greengrass
**nota**  
Esta característica está disponible en la versión 2.9.5 y versiones posteriores del núcleo de Greengrass.

   1. Use el siguiente comando para verificar la firma del artefacto del núcleo de Greengrass:

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

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

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

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

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

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

      El nombre del archivo puede tener un aspecto diferente según la versión de JDK que instale. Reemplace *`jdk17.0.6_10`* por la versión de JDK que instaló.

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

------

   1. La invocación `jarsigner` produce un resultado que indica los resultados de la verificación.

      1. Si el archivo zip del núcleo de Greengrass está firmado, el resultado contiene la siguiente declaración:

         ```
         jar verified.
         ```

      1. Si el archivo zip del núcleo de Greengrass no está firmado, el resultado contiene la siguiente declaración:

         ```
         jar is unsigned.
         ```

   1. Si ha proporcionado la opción `-certs` Jarsigner junto con las opciones `-verify` y `-verbose`, el resultado también incluye información detallada del certificado de firmante.

1. <a name="installation-unzip-ggc-software-step"></a>Descomprime el software AWS IoT Greengrass Core en una carpeta de tu dispositivo. *GreengrassInstaller*Sustitúyalo por la carpeta que desee 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) Ejecute el siguiente comando para ver la versión del software AWS IoT Greengrass principal.

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

**importante**  <a name="installer-folder-2.4.0-warning"></a>
Si instala una versión del núcleo de Greengrass anterior a la v2.4.0, no elimine esta carpeta después de instalar el software Core. AWS IoT Greengrass El software AWS IoT Greengrass Core utiliza los archivos de esta carpeta para ejecutarse.  
Si descargó la última versión del software, instale la versión 2.4.0 o posterior y podrá eliminar esta carpeta después de instalar el software AWS IoT Greengrass principal.

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

Ejecute el instalador con argumentos que especifiquen las siguientes acciones:
+ Instálelo desde un archivo de configuración parcial que especifique el uso de su complemento de aprovisionamiento personalizado para aprovisionar AWS recursos. El software AWS IoT Greengrass Core utiliza un archivo de configuración que especifica la configuración de todos los componentes de Greengrass del dispositivo. El instalador crea un archivo de configuración completo a partir del archivo de configuración parcial que usted proporciona y de los AWS recursos que crea el complemento de aprovisionamiento personalizado.
+ <a name="install-argument-component-default-user"></a>Especifique si desea usar el usuario del sistema `ggc_user` para ejecutar los componentes de software en el dispositivo principal. En los dispositivos Linux, este comando también especifica el uso del grupo del sistema `ggc_group` y el instalador crea el usuario y el grupo del sistema por usted.
+ <a name="install-argument-system-service"></a>Configure el software AWS IoT Greengrass principal como un servicio del sistema que se ejecute durante el arranque. En los dispositivos Linux, esto requiere el sistema de inicio [Systemd](https://en.wikipedia.org/wiki/Systemd).
**importante**  <a name="windows-system-service-requirement-important-note"></a>
En los dispositivos principales de Windows, debe configurar el software AWS IoT Greengrass principal como un servicio del sistema.

Para obtener más información acerca de los argumentos que puede especificar, consulte [Argumentos del instalador](configure-installer.md).

**nota**  
<a name="jvm-tuning-note"></a>Si utilizas un AWS IoT Greengrass dispositivo con memoria limitada, puedes controlar la cantidad de memoria que utiliza el software AWS IoT Greengrass Core. Para controlar la asignación de memoria, puede configurar las opciones de tamaño de montón de la JVM en el parámetro de configuración `jvmOptions` del componente núcleo. Para obtener más información, consulte [Control de la asignación de memoria con las opciones de JVM](configure-greengrass-core-v2.md#jvm-tuning).

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

1. <a name="installer-check-greengrass-core-software-version"></a>Compruebe la versión del software AWS IoT Greengrass principal.
   + *GreengrassInstaller*Sustitúyala por la ruta a la carpeta que contiene el software.

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

1. Use un editor de texto para crear un archivo de configuración llamado `config.yaml` para proporcionárselo al instalador.

   <a name="nano-command-intro"></a>Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

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

   Copie el siguiente contenido YAML en el archivo.

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

   A continuación, proceda del modo siguiente:
   + *2.17.0*Sustitúyala por la versión del software AWS IoT Greengrass principal.
   + Reemplace cada instancia de `/greengrass/v2` por la carpeta raíz de Greengrass.
   + (Opcional) Especifique los valores de configuración del sistema y del núcleo. Debe establecer estos valores si su complemento de aprovisionamiento no los proporciona.
   + (Opcional) Especifique los parámetros de configuración para proporcionarlos a su complemento de aprovisionamiento.
**nota**  
En este archivo de configuración, puede personalizar otras opciones de configuración, como los puertos y el proxy de red que use, tal como se muestra en el siguiente ejemplo. Para obtener más información, consulte la [Configuración del núcleo de 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. Ejecute el instalador. Especifique `--trusted-plugin` para proporcionar su complemento de aprovisionamiento personalizado y especifique `--init-config` para proporcionar el archivo de configuración.
**nota**  
Windows tiene una limitación de longitud de ruta de 260 caracteres. Si usa Windows, use una carpeta raíz como `C:\greengrass\v2` o `D:\greengrass\v2` para mantener las rutas de los componentes de Greengrass por debajo del límite de 260 caracteres.
   + Sustituya `/greengrass/v2` o *C:\$1greengrass\$1v2* por la carpeta raíz de Greengrass.
   + Sustituya cada instancia de por *GreengrassInstaller* la carpeta en la que desempaquetó el instalador.
   + Reemplace la ruta al archivo JAR del complemento de aprovisionamiento personalizado por la ruta al archivo JAR del complemento.

------
#### [ 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>
En los dispositivos principales de Windows, debe especificar si `--setup-system-service true` desea configurar el software AWS IoT Greengrass principal como un servicio del sistema.

   <a name="installer-setup-system-service-output-message"></a>Si especifica `--setup-system-service true`, el instalador imprime `Successfully set up Nucleus as a system service` si configuró y ejecutó el software como un servicio del sistema. De lo contrario, el instalador no mostrará ningún mensaje si instala el software correctamente.
**nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
No puede usar el argumento `deploy-dev-tools` para implementar herramientas de desarrollo locales cuando ejecuta el instalador sin el argumento `--provision true`. Para obtener información sobre cómo implementar la CLI de Greengrass directamente en su dispositivo, consulte [Interfaz de la línea de comandos de Greengrass](gg-cli.md).

1. <a name="installer-verify-installation"></a>Verifique la instalación mediante la consulta de los archivos de la carpeta raíz.

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

   ```
   ls /greengrass/v2
   ```

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

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

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

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

------

   Si la instalación se realizó correctamente, la carpeta raíz contiene varias carpetas, como `config`, `packages` y `logs`.

<a name="install-greengrass-core-run-software"></a>Si instaló el software AWS IoT Greengrass Core como un servicio del sistema, el instalador ejecutará el software automáticamente. De no ser así, debe ejecutar el software manualmente. Para obtener más información, consulte [Ejecute el software AWS IoT Greengrass principal](run-greengrass-core-v2.md).

<a name="install-greengrass-core-next-steps-intro"></a>Para obtener más información sobre cómo configurar y utilizar el software AWS IoT Greengrass, consulte lo siguiente:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurar el software AWS IoT Greengrass principal](configure-greengrass-core-v2.md)
+ [Desarrolle AWS IoT Greengrass componentes](develop-greengrass-components.md)
+ [Implemente AWS IoT Greengrass componentes en los dispositivos](manage-deployments.md)
+ [Interfaz de la línea de comandos de Greengrass](gg-cli.md)

# Desarrollo de complementos de aprovisionamiento personalizados
<a name="develop-custom-provisioning-plugins"></a>

Para desarrollar un complemento de aprovisionamiento personalizado, cree una clase Java que implemente la interfaz `com.aws.greengrass.provisioning.DeviceIdentityInterface`. Puede incluir el archivo JAR del núcleo de Greengrass en su proyecto para acceder a esta interfaz y a sus clases. Esta interfaz define un método que introduce una configuración de complemento y genera una configuración de aprovisionamiento. La configuración de aprovisionamiento define las configuraciones para el sistema y el [componente núcleo de Greengrass](greengrass-nucleus-component.md). El instalador del software AWS IoT Greengrass principal utiliza esta configuración de aprovisionamiento para configurar el software AWS IoT Greengrass principal en un dispositivo.

Después de desarrollar un complemento de aprovisionamiento personalizado, créelo como un archivo JAR que puede proporcionar al instalador del software AWS IoT Greengrass principal para que ejecute el complemento durante la instalación. El instalador ejecuta el complemento de aprovisionamiento personalizado en la misma JVM que utiliza el instalador, por lo que puede crear un JAR que contenga únicamente el código del complemento.

**nota**  
El [complemento de aprovisionamiento de flota de AWS IoT](fleet-provisioning.md) implementa `DeviceIdentityInterface` para utilizar el aprovisionamiento de flota durante la instalación. El complemento de aprovisionamiento de flota es de código abierto, por lo que puede explorar su código de origen para ver un ejemplo de cómo utilizar la interfaz del complemento de aprovisionamiento. Para obtener más información, consulte el [complemento de aprovisionamiento de AWS IoT flotas](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) en. GitHub

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

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

Para desarrollar un complemento de aprovisionamiento personalizado, debe crear una clase Java que cumpla con los siguientes requisitos:
+ Usa el paquete `com.aws.greengrass` o un paquete dentro del paquete `com.aws.greengrass`.
+ Tiene un constructor sin argumentos.
+ Implementa la interfaz `DeviceIdentityInterface`. Para obtener más información, consulte [Implemente la interfaz DeviceIdentityInterface](#implement-device-identity-interface).

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

Para utilizar la interfaz `com.aws.greengrass.provisioning.DeviceIdentityInterface` en su complemento personalizado, agregue el núcleo de Greengrass como una dependencia a su proyecto.

**Para utilizarla DeviceIdentityInterface en un proyecto de complemento de aprovisionamiento personalizado**
+ Puede agregar el archivo JAR del núcleo de Greengrass como biblioteca o agregar el núcleo de Greengrass como una dependencia de Maven. Realice una de las siguientes acciones:
  + Para añadir el archivo JAR del núcleo de Greengrass como biblioteca, descargue el software AWS IoT Greengrass Core, que contiene el JAR del núcleo de Greengrass. Puede descargar la última versión del software AWS IoT Greengrass Core desde la siguiente ubicación:
    + [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

    Puede encontrar el archivo JAR del núcleo de Greengrass (`Greengrass.jar`) en la carpeta `lib` del archivo ZIP. Agregue este archivo JAR a su proyecto.
  + Para utilizar el núcleo de Greengrass en un proyecto de Maven, agregue una dependencia al artefacto `nucleus` del grupo `com.aws.greengrass`. También debe agregar el repositorio `greengrass-common`, ya que el núcleo de Greengrass no está disponible en el repositorio central de 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>
    ```

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

La interfaz `com.aws.greengrass.provisioning.DeviceIdentityInterface` tiene la siguiente forma.

**nota**  
[También puede explorar estas clases en el [paquete com.aws.greengrass.provisioning del](https://github.com/aws-greengrass/aws-greengrass-nucleus/tree/main/src/main/java/com/aws/greengrass/provisioning) código fuente del núcleo de Greengrass en.](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 {}
```

Todos los valores de configuración de `SystemConfiguration` y `NucleusConfiguration` son necesarios para instalar el software Core, pero puede devolverlos AWS IoT Greengrass . `null` Si su complemento de aprovisionamiento personalizado devuelve `null` algún valor de configuración, debe proporcionar ese valor en la configuración del sistema o del núcleo al crear el `config.yaml` archivo que se va a proporcionar al instalador del software AWS IoT Greengrass Core. Si su complemento de aprovisionamiento personalizado devuelve un valor no nulo para una opción que también ha definido en `config.yaml`, el instalador sustituirá el valor en `config.yaml` por el valor devuelto por el complemento.