

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.

# Archivo de configuración la CLI del kit de desarrollo de Greengrass
<a name="gdk-cli-configuration-file"></a>

La interfaz de línea de comandos del kit de desarrollo de AWS IoT Greengrass (CLI del GDK) lee un archivo de configuración denominado `gdk-config.json` para crear y publicar componentes. Este archivo de configuración debe estar en la raíz del repositorio del componente. Puede utilizar el [comando init](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-init) de la CLI del GDK para inicializar los repositorios de componentes con este archivo de configuración.

**Topics**
+ [Formato de archivo de configuración de la CLI del GDK](#gdk-config-format)
+ [Ejemplos de archivo de configuración de la CLI del GDK](#gdk-config-examples)

## Formato de archivo de configuración de la CLI del GDK
<a name="gdk-config-format"></a>

Al definir un archivo de configuración de la CLI del GDK para un componente, se especifica la siguiente información en formato JSON.

`gdk_version`  
La versión mínima de la CLI del GDK que es compatible con este componente. Este valor debe ser una de las versiones de la CLI del GDK de los [lanzamientos](https://github.com/aws-greengrass/aws-greengrass-gdk-cli/releases).

`component`  
La configuración de este componente.    
`componentName`    
`author`  
El autor o publicador del componente.  
`version`  
Esta es la versión del componente. Especifique uno de los siguientes valores:  <a name="gdk-cli-configuration-file-component-version-options"></a>
+ `NEXT_PATCH`: al elegir esta opción, la CLI de GDK establece la versión al publicar el componente. La CLI de GDK consulta el servicio de AWS IoT Greengrass para identificar la versión más reciente publicada del componente. A continuación, establece la versión en la siguiente versión del parche posterior a esa versión. Si no ha publicado el componente antes, la CLI de GDK usa la versión `1.0.0`.

  Si elige esta opción, no podrá usar la [CLI de Greengrass](greengrass-cli-component.md) para implementar y probar localmente el componente en su computadora de desarrollo local que ejecuta el software AWS IoT Greengrass Core. Para habilitar las implementaciones locales, debe especificar una versión semántica en su lugar.
+ Una versión semántica, como **1.0.0**. Las versiones semánticas siguen un sistema de números de *major*.*minor*.*patch*. Para obtener más información, consulte la [especificación semántica de la versión](https://semver.org/).

  Si desarrolla componentes en un dispositivo principal de Greengrass en el que desee implementar y probar el componente, elija esta opción. Debe compilar el componente con una versión específica para crear implementaciones locales con la [CLI de Greengrass](greengrass-cli-component.md).  
`build`  
La configuración que se utilizará para convertir el origen de este componente en artefactos. Este objeto contiene la siguiente información:    
  `build_system`   
El sistema de compilación que se va a utilizar. Puede elegir entre las siguientes opciones:  <a name="gdk-cli-configuration-file-component-build-system-options"></a>
+ `zip`: empaqueta la carpeta del componente en un archivo ZIP para definirla como el único artefacto del componente. Elija esta opción para los siguientes tipos de componentes:
  + Componentes que usan lenguajes de programación interpretados, como Python o JavaScript.
  + Componentes que empaquetan archivos distintos del código, como modelos de machine learning u otros recursos.

  La CLI de GDK comprime la carpeta del componente en un archivo zip con el mismo nombre que la carpeta del componente. Por ejemplo, si el nombre de la carpeta del componente es `HelloWorld`, la CLI de GDK crea un archivo zip denominado `HelloWorld.zip`.
**nota**  
Si usa la versión 1.0.0 de la CLI de GDK en un dispositivo Windows, los nombres de las carpetas y los archivos zip de los componentes deben contener solo letras minúsculas.

  Cuando la CLI de GDK comprime la carpeta del componente en un archivo zip, omite los siguientes archivos:
  + El archivo `gdk-config.json`
  + El archivo de receta (`recipe.json` o `recipe.yaml`)
  + Carpetas de compilación, como `greengrass-build`
+ `maven`: ejecuta el comando `mvn clean package` para compilar el origen del componente en artefactos. Elija esta opción para los componentes que usan [Maven](https://maven.apache.org/), como los componentes de Java.

  En dispositivos Windows, esta característica está disponible para la versión 1.1.0 y posteriores de la CLI de GDK.
+ `gradle`: ejecuta el comando `gradle build` para compilar el origen del componente en artefactos. Elija esta opción para los componentes que usan [Gradle](https://gradle.org/). Esta característica está disponible para la versión 1.1.0 y posteriores de la CLI de GDK.

  El sistema de compilación `gradle` admite Kotlin DSL como archivo de compilación. Esta característica está disponible para la versión 1.2.0 y versiones posteriores de la CLI de GDK.
+ `gradlew`: ejecuta el comando `gradlew` para compilar el origen del componente en artefactos. Elija esta opción para los componentes que usan el [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html).

  Esta característica está disponible para la versión 1.2.0 y versiones posteriores de la CLI de GDK.
+ `custom`: ejecuta un comando personalizado para compilar el origen del componente en una receta y artefactos. Especifique el comando personalizado en el parámetro `custom_build_command`.  
`custom_build_command`  
(Opcional) El comando de compilación personalizado que se ejecuta en un sistema de compilación personalizado. Debe especificar este parámetro si especifica `custom` para `build_system`.  
Este comando debe crear una receta y artefactos en las siguientes carpetas de la carpeta del componente. La CLI de GDK crea estas carpetas automáticamente al ejecutar el [comando component build](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-build).  
+ Carpeta de recetas: `greengrass-build/recipes`
+ Carpeta de artefactos: `greengrass-build/artifacts/componentName/componentVersion`

  Sustituya *componentName* por el nombre del componente y sustituya *componentVersion* por la versión del componente o `NEXT_PATCH`.
Puede especificar una sola cadena o una lista de cadenas, donde cada cadena es una palabra del comando. Por ejemplo, para ejecutar un comando de compilación personalizado para un componente de C\$1\$1, puede especificar **cmake --build build --config Release** o **["cmake", "--build", "build", "--config", "Release"]**.  
Para ver un ejemplo de un sistema de compilación personalizado, consulte [aws.greengrass.labs.LocalWebServer community component en GitHub](https://github.com/awslabs/aws-greengrass-labs-local-web-server).  
`options`  
(Opcional) Se utilizan opciones de configuración adicionales durante el proceso de creación del componente.  
Esta característica está disponible para la versión 1.2.0 y versiones posteriores de la CLI de GDK.    
`excludes`  
Una lista de patrones globales que definen qué archivos se deben excluir del directorio de componentes al crear el archivo zip. Válido solo cuando `build_system` es `zip`.  
En las versiones 1.4.0 y anteriores de la CLI del GDK, cualquier archivo que coincida con una entrada de la lista de exclusiones se excluye de todos los subdirectorios del componente. Para lograr el mismo comportamiento en las versiones 1.5.0 y posteriores de la CLI del GDK, anteponga `**/` a las entradas existentes en la lista de exclusiones. Por ejemplo, `*.txt` excluirá los archivos de texto solo del directorio; `**/*.txt` excluirá los archivos de texto de todos los directorios y subdirectorios.  
En las versiones 1.5.0 y posteriores de la CLI del GDK, es posible que vea una advertencia durante la compilación del componente cuando `excludes` esté definido en el archivo de configuración del GDK. Para deshabilitar esta advertencia, defina la variable de entorno `GDK_EXCLUDES_WARN_IGNORE` en `true`.
La CLI del GDK siempre excluye los siguientes archivos del archivo zip:  
+ El archivo `gdk-config.json`
+ El archivo de receta (`recipe.json` o `recipe.yaml`)
+ Carpetas de compilación, como `greengrass-build`
De forma predeterminada, se excluyen los siguientes archivos. Sin embargo, puede controlar cuáles de estos archivos se excluyen con la opción `excludes`.  
+ Cualquier carpeta que comience con el prefijo “test” (`test*`)
+ Todos los archivos ocultos
+ La carpeta `node_modules`
Si especifica la opción `excludes`, la CLI del GDK excluirá solo los archivos que configuró con la opción `excludes`. Si no especifica la opción `excludes`, la CLI del GDK excluye los archivos y carpetas predeterminados indicados anteriormente.  
`zip_name`  
El nombre del archivo zip que se utilizará al crear un artefacto zip durante el proceso de creación. Válido solo cuando `build_system` es `zip`. Si `build_system` está vacío, el nombre del componente se utiliza como nombre del archivo zip.  
`publish`  
La configuración que se utilizará para publicar este componente en el servicio de AWS IoT Greengrass.  
<a name="gdk-cli-s3-bucket-name-formation"></a>Si usa la versión 1.1.0 o posteriores de la CLI de GDK, puede especificar el argumento `--bucket` para especificar el bucket de S3 en el que la CLI de GDK carga los artefactos del componente. <a name="gdk-cli-s3-bucket-name-formation-format"></a>Si no especifica este argumento, la CLI de GDK se carga en el bucket de S3 cuyo nombre es `bucket-region-accountId`, donde *bucket* y *region* son los valores que especifica en `gdk-config.json` y *acountId* es el ID de su Cuenta de AWS. La CLI de GDK crea el bucket si no existe.  
Este objeto contiene la siguiente información:    
`bucket`  
El nombre del bucket de S3 que se utilizará para alojar los artefactos de los componentes.  
`region`  
La Región de AWS donde la CLI del GDK publica este componente.  
Esta propiedad es opcional si utiliza la CLI del GDK versión 1.3.0 o versiones posteriores.  
`options`  
(Opcional) Se utilizan opciones de configuración adicionales durante la creación de la versión del componente.  
Esta característica está disponible para la versión 1.2.0 y versiones posteriores de la CLI de GDK.    
`file_upload_args`  
Una estructura JSON que contiene argumentos que se envían a Amazon S3 al cargar archivos a un bucket, como metadatos y mecanismos de cifrado. Para obtener una lista de los argumentos permitidos, consulte la clase [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/customizations/s3.html#boto3.s3.transfer.S3Transfer.ALLOWED_UPLOAD_ARGS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/customizations/s3.html#boto3.s3.transfer.S3Transfer.ALLOWED_UPLOAD_ARGS) en la *documentación de Boto3*.

`test-e2e`  
(Opcional) La configuración que se utilizará durante las pruebas integrales del componente. Esta característica está disponible para la CLI del GDK de versión 1.3.0 y versiones posteriores.    
`build`  
`build_system`: el sistema de compilación que se va a utilizar. La opción predeterminada es `maven`. Puede elegir entre las siguientes opciones:  
+ `maven`: ejecuta el comando `mvn package` para compilar el módulo de pruebas. Elija esta opción para compilar el módulo de pruebas que usa [Maven](https://maven.apache.org/).
+ `gradle`: ejecuta el comando `gradle build` para compilar el módulo de pruebas. Elige esta opción para el módulo de pruebas que usa [Gradle](https://gradle.org/).   
`gtf_version`  
(Opcional) La versión del Greengrass Testing Framework (GTF) que se utilizará como dependencia del módulo de pruebas de extremo a extremo al inicializar el proyecto GDK con GTF. Este valor debe ser una de las versiones del GTF de [los lanzamientos](https://github.com/aws-greengrass/aws-greengrass-testing/releases). El valor predeterminado es la versión 1.1.0 de GTF.  
`gtf_options`  
(Opcional) Opciones de configuración adicionales utilizadas durante las pruebas integrales del componente.  
<a name="gtf_options"></a>En la siguiente lista, se incluyen las opciones que puede utilizar con la versión 1.1.0 de GTF.  
+ `additional-plugins`: (opcional) complementos de Cucumber adicionales
+ `aws-region`: apunta a puntos de conexión regionales específicos para los servicios de AWS. El valor predeterminado es lo que detecta el SDK de AWS.
+ `credentials-path`: ruta de credenciales de perfil de AWS opcional. El valor predeterminado son las credenciales detectadas en el entorno host.
+ `credentials-path-rotation`: duración de rotación opcional para las credenciales de AWS. El valor predeterminado es de 15 minutos o `PT15M`.
+ `csr-path`: la ruta de la CSR mediante la cual se generará el certificado del dispositivo.
+ `device-mode`: el dispositivo objetivo que se está probando. El valor predeterminado es el dispositivo local.
+ `env-stage`: apunta al entorno de implementación de Greengrass. El valor predeterminado es de producción.
+ `existing-device-cert-arn`: el ARN de un certificado existente que desee usar como certificado de dispositivo para Greengrass.
+ `feature-path`: archivo o directorio que contiene archivos de características adicionales. El valor predeterminado es que no se usan archivos de características adicionales.
+ `gg-cli-version`: anula la versión de la CLI de Greengrass. El valor predeterminado es el que se encuentra en `ggc.version`.
+ `gg-component-bucket`: el nombre de un bucket de Amazon S3 existente que aloja los componentes de Greengrass.
+ `gg-component-overrides`: una lista de anulaciones de componentes de Greengrass.
+ `gg-persist`: una lista de elementos de prueba que persisten tras una ejecución de la prueba. El comportamiento predeterminado es no conservar nada. Los valores aceptados son: `aws.resources`, `installed.software` y `generated.files`.
+ `gg-runtime`: una lista de valores para influir en la forma en que la prueba interactúa con los recursos de la prueba. Estos valores sustituyen al parámetro `gg.persist`. Si el valor predeterminado está vacío, se asume que todos los recursos de prueba se administran por caso de prueba, incluido el tiempo de ejecución de Greengrass instalado. Los valores aceptados son: `aws.resources`, `installed.software` y `generated.files`.
+ `ggc-archive`: la ruta hacia el componente del núcleo de Greengrass archivado.
+ `ggc-install-root`: directorio para instalar el componente núcleo de Greengrass. Los valores predeterminados son test.temp.path y la carpeta de ejecución de la prueba.
+ `ggc-log-level`: establece el nivel de registro del núcleo de Greengrass para la ejecución de la prueba. El valor predeterminado es “INFO”.
+ `ggc-tes-rolename`: el rol de IAM que asumirá AWS IoT Greengrass Core para acceder a los servicios de AWS. Si no existe un rol con un nombre dado, se creará uno con una política de acceso predeterminada.
+ `ggc-trusted-plugins`: la lista separada por comas de las rutas (en el host) de los complementos de confianza que deben agregarse a Greengrass. Para indicar la ruta en el propio DUT, agregue el prefijo “dut:” a la ruta
+ `ggc-user-name`: el valor user:group posixUser para el núcleo de Greengrass. El valor predeterminado es el nombre de usuario actual con el que se ha iniciado sesión.
+ `ggc-version`: anula la versión del componente núcleo de Greengrass en ejecución. El valor predeterminado es el que se encuentra en ggc.archive.
+ `log-level`: nivel de registro de la ejecución de la prueba. El valor predeterminado es “INFO”.
+ `parallel-config`: conjunto de índices de lotes y número de lotes como cadena JSON. El valor predeterminado del índice de lotes es 0 y el número de lotes es 1.
+ `proxy-url`: configura todas las pruebas para enrutar el tráfico a través de esta URL.
+ `tags`: ejecuta únicamente etiquetas de características. Se puede intersecar con “&”
+ `test-id-prefix`: un prefijo común que se aplica a todos los recursos específicos de la prueba, incluidos los nombres y las etiquetas de los recursos de AWS. El prefijo predeterminado es “gg”.
+ `test-log-path`: directorio que contendrá los resultados de toda la ejecución de la prueba. El valor predeterminado es “testResults”.
+ `test-results-json`: marcador para determinar si se genera un informe JSON de Cucumber resultante escrito en el disco. El valor predeterminado es true (verdadero).
+ `test-results-log`: marcador para determinar si la salida de la consola se genera escrita en el disco. El valor predeterminado es falso.
+ `test-results-xml`: marcador para determinar si se genera un informe XML de JUnit resultante escrito en el disco. El valor predeterminado es true (verdadero).
+ `test-temp-path`: directorio para generar artefactos de prueba locales. El valor predeterminado es un directorio temporal aleatorio con el prefijo gg-testing.
+ `timeout-multiplier`: multiplicador proporcionado para todos los tiempos de espera de las pruebas. El valor predeterminado es 1.0.

## Ejemplos de archivo de configuración de la CLI del GDK
<a name="gdk-config-examples"></a>

Puede hacer referencia a los siguientes ejemplos de archivos de configuración de la CLI del GDK para ayudarlo a configurar los entornos de componentes de Greengrass.

### Hello World (Python)
<a name="gdk-config-example-hello-world-python"></a>

El siguiente archivo de configuración de la CLI del GDK admite un componente Hello world que ejecuta un script de Python. Este archivo de configuración utiliza el sistema de compilación `zip` para empaquetar el script de Python del componente en un archivo ZIP que la CLI del GDK carga como un artefacto.

```
{
  "component": {
    "com.example.PythonHelloWorld": {
      "author": "Amazon",
      "version": "NEXT_PATCH",
      "build": {
        "build_system" : "zip",
        "options": {
           "excludes": [".*"]
        }
      },
      "publish": {
        "bucket": "greengrass-component-artifacts",
        "region": "us-west-2",
        "options": {
           "file_upload_args": {
              "Metadata": {
                 "some-key": "some-value"
              }
           }
        }
      }
    },
  "test-e2e":{
    "build":{
        "build_system": "maven"
    },
    "gtf_version": "1.1.0",
    "gtf_options": { 
         "tags": "Sample"
     }
  },
  "gdk_version": "1.6.1"
  }
}
```

### Hello World (Java)
<a name="gdk-config-example-hello-world-java"></a>

El siguiente archivo de configuración de la CLI del GDK admite un componente Hello world que ejecuta una aplicación Java. Este archivo de configuración utiliza el sistema de compilación `maven` para empaquetar el código de origen Java del componente en un archivo JAR que la CLI de GDK carga como un artefacto.

```
{
  "component": {
    "com.example.JavaHelloWorld": {
      "author": "Amazon",
      "version": "NEXT_PATCH",
      "build": {
        "build_system" : "maven"
      },
      "publish": {
        "bucket": "greengrass-component-artifacts",
        "region": "us-west-2",
        "options": {
           "file_upload_args": {
              "Metadata": {
                 "some-key": "some-value"
              }
           }
        }
      }
  },
  "test-e2e":{
    "build":{
        "build_system": "maven"
    },
    "gtf_version": "1.1.0",
    "gtf_options": { 
         "tags": "Sample"
     }
  },
  "gdk_version": "1.6.1"
  }
}
```

### Componentes de la comunidad
<a name="gdk-config-community-component-examples"></a>

Varios componentes de la comunidad del [catálogo de software de Greengrass](greengrass-software-catalog.md) utilizan la CLI del GDK. Puede explorar los archivos de configuración de la CLI del GDK en los repositorios de estos componentes.

**Cómo ver los archivos de configuración de la CLI del GDK de los componentes de la comunidad**

1. Ejecute el siguiente comando para mostrar en una lista los componentes de la comunidad que utilizan la CLI del GDK.

   ```
   gdk component list --repository
   ```

   La respuesta muestra el nombre del repositorio de GitHub para cada componente de la comunidad que usa la CLI del GDK. Cada repositorio existe en la organización `awslabs`.

   ```
   [2022-02-22 17:27:31] INFO - Listing all the available component repositories from Greengrass Software Catalog.
   [2022-02-22 17:27:31] INFO - Found '6' component repositories to display.
   1. aws-greengrass-labs-database-influxdb
   2. aws-greengrass-labs-telemetry-influxdbpublisher
   3. aws-greengrass-labs-dashboard-grafana
   4. aws-greengrass-labs-dashboard-influxdb-grafana
   5. aws-greengrass-labs-local-web-server
   6. aws-greengrass-labs-lookoutvision-gstreamer
   ```

1. Abra el repositorio de GitHub de un componente de la comunidad en la siguiente URL. Sustituya *community-component-name* por el nombre de un componente de la comunidad del paso anterior.

   ```
   https://github.com/awslabs/community-component-name
   ```