AWS IoT Greengrass referencia de recetas de componentes - AWS IoT Greengrass

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.

AWS IoT Greengrass referencia de recetas de componentes

La receta del componente es un archivo que define los detalles, las dependencias, los artefactos y los ciclos de vida de un componente. El ciclo de vida del componente especifica los comandos que se deben ejecutar para instalar, ejecutar y apagar el componente, por ejemplo. El AWS IoT Greengrass núcleo utiliza los ciclos de vida que se definen en la receta para instalar y ejecutar los componentes. El AWS IoT Greengrass servicio utiliza la receta para identificar las dependencias y los artefactos que se van a implementar en los dispositivos principales al implementar el componente.

En la receta, puede definir dependencias y ciclos de vida únicos para cada plataforma compatible con un componente. Puede utilizar esta capacidad para implementar un componente en dispositivos con varias plataformas que tengan requisitos diferentes. También puede usarla para AWS IoT Greengrass evitar que se instale un componente en dispositivos que no lo admitan.

Cada receta contiene una lista de manifiestos. Cada manifiesto especifica un conjunto de requisitos de plataforma, así como el ciclo de vida y los artefactos que se utilizarán en los dispositivos principales cuya plataforma cumpla con esos requisitos. El dispositivo principal usa el primer manifiesto con los requisitos de plataforma que cumple el dispositivo. Especifique un manifiesto sin ningún requisito de plataforma que coincida con ningún dispositivo principal.

También puedes especificar un ciclo de vida global que no esté en un manifiesto. En el ciclo de vida global, puedes usar claves de selección que identifiquen las subsecciones del ciclo de vida. Luego, puedes especificar estas claves de selección en un manifiesto para usar esas secciones del ciclo de vida global además del ciclo de vida del manifiesto. El dispositivo principal usa las claves de selección del manifiesto solo si el manifiesto no define un ciclo de vida. Puedes usar la all selección de un manifiesto para hacer coincidir las secciones del ciclo de vida global sin claves de selección.

Una vez que el software AWS IoT Greengrass principal selecciona un manifiesto que coincide con el dispositivo principal, hace lo siguiente para identificar los pasos del ciclo de vida que se deben seguir:

  • Si el manifiesto seleccionado define un ciclo de vida, el dispositivo principal utiliza ese ciclo de vida.

  • Si el manifiesto seleccionado no define un ciclo de vida, el dispositivo principal utiliza el ciclo de vida global. El dispositivo principal hace lo siguiente para identificar qué secciones del ciclo de vida global debe utilizar:

    • Si el manifiesto define las claves de selección, el dispositivo principal utiliza las secciones del ciclo de vida global que contienen las claves de selección del manifiesto.

    • Si el manifiesto no define las claves de selección, el dispositivo principal utiliza las secciones del ciclo de vida global que no tienen claves de selección. Este comportamiento equivale a un manifiesto que define la all selección.

importante

Un dispositivo principal debe cumplir como mínimo los requisitos de plataforma de un manifiesto para instalar el componente. Si ningún manifiesto coincide con el dispositivo principal, el software AWS IoT Greengrass principal no instala el componente y se produce un error en la implementación.

Puede definir recetas en JSONo en cualquier YAMLformato. La sección de ejemplos de recetas incluye recetas en cada formato.

Validación de recetas

Greengrass valida una receta de un JSON YAML componente al crear una versión de un componente. Esta validación de la receta comprueba su receta JSON o la de sus YAML componentes para detectar errores comunes a fin de evitar posibles problemas de implementación. La validación comprueba la receta para detectar errores comunes (p. ej., falta de comas, corchetes y campos) y se asegura de que la receta esté bien formada.

Si recibes un mensaje de error al validar una receta, comprueba si en ella faltan comas, corchetes o campos. Comprueba que no te falta ningún campo consultando el formato de la receta.

Formato de receta

Al definir una receta para un componente, se especifica la siguiente información en el documento de receta. La misma estructura se aplica a las recetas en JSON formatos YAML y formatos.

RecipeFormatVersion

La versión de plantilla de la receta. Elija la opción siguiente:

  • 2020-01-25

ComponentName

El nombre del componente que define esta receta. El nombre del componente debe ser único Cuenta de AWS en cada región.

Consejos
  • Utilice el formato de nombre de dominio inverso para evitar colisiones de nombres dentro de su empresa. Por ejemplo, si su empresa es propietaria de un proyecto de energía solar example.com y usted trabaja en él, puede ponerle un nombre a su componente com.example.solar.HelloWorld Hello World. Esto ayuda a evitar colisiones entre los nombres de los componentes dentro de su empresa.

  • Evite el aws.greengrass prefijo en los nombres de sus componentes. AWS IoT Greengrass usa este prefijo para los componentes públicos que proporciona. Si elige el mismo nombre que un componente público, el componente reemplaza a ese componente. A continuación, AWS IoT Greengrass proporciona su componente en lugar del componente público cuando despliega componentes que dependen de ese componente público. Esta función le permite anular el comportamiento de los componentes públicos, pero también puede interrumpir otros componentes si no tiene intención de anular un componente público.

ComponentVersion

Esta es la versión del componente. El valor máximo para los valores principales, secundarios y de parche es 999999.

nota

AWS IoT Greengrass utiliza versiones semánticas para los componentes. Las versiones semánticas siguen un sistema de números de principal.secundario.parche. Por ejemplo, la versión 1.0.0 representa la primera versión principal de un componente. Para obtener más información, consulte la especificación de la versión semántica.

ComponentDescription

(Opcional) La descripción del componente.

ComponentPublisher

El publicador o el autor del componente.

ComponentConfiguration

(Opcional) Un objeto que define la configuración o los parámetros del componente. Define la configuración predeterminada y, a continuación, cuando despliega el componente, puede especificar el objeto de configuración que se va a proporcionar al componente. La configuración de los componentes admite parámetros y estructuras anidados. Este objeto contiene la siguiente información:

DefaultConfiguration

Objeto que define la configuración por defecto del componente. Usted define la estructura de este objeto.

nota

AWS IoT Greengrass utiliza JSON los valores de configuración. JSONespecifica un tipo de número pero no diferencia entre números enteros y flotantes. Como resultado, los valores de configuración pueden convertirse en valores flotantes. AWS IoT Greengrass Para garantizar que su componente utilice el tipo de datos correcto, le recomendamos que defina los valores de configuración numéricos como cadenas. A continuación, pida a su componente que los analice como enteros o flotantes. Esto garantiza que los valores de configuración sean del mismo tipo en la configuración y en el dispositivo principal.

ComponentDependencies

(Opcional) Un diccionario de objetos, cada uno de los cuales define una dependencia de un componente para el componente. La clave de cada objeto identifica el nombre de la dependencia del componente. AWS IoT Greengrass instala las dependencias de los componentes cuando se instala el componente. AWS IoT Greengrass espera a que se inicien las dependencias antes de iniciar el componente. Cada objeto contiene la siguiente información:

VersionRequirement

La restricción de versión semántica de estilo npm que define las versiones de los componentes compatibles para esta dependencia. Puede especificar una versión o un rango de versiones. Para obtener más información, consulte la calculadora de versiones semánticas de npm.

DependencyType

(Opcional) El tipo de esta dependencia. Puede elegir entre las siguientes opciones.

  • SOFT — El componente no se reinicia si la dependencia cambia de estado.

  • HARD — El componente se reinicia si la dependencia cambia de estado.

El valor predeterminado es HARD.

ComponentType

(Opcional) El tipo de componente.

nota

No se recomienda especificar el tipo de componente en una receta. AWS IoT Greengrass establece el tipo automáticamente al crear un componente.

El tipo puede ser de los siguientes tipos:

  • aws.greengrass.generic— El componente ejecuta comandos o proporciona artefactos.

  • aws.greengrass.lambda— El componente ejecuta una función Lambda mediante el componente Lambda launcher. El ComponentSource parámetro especifica ARN la función Lambda que ejecuta este componente.

    No se recomienda utilizar esta opción, ya que se establece AWS IoT Greengrass al crear un componente a partir de una función Lambda. Para obtener más información, consulte AWS LambdaFunciones de ejecución.

  • aws.greengrass.plugin— El componente se ejecuta en la misma máquina virtual Java (JVM) que el núcleo de Greengrass. Si despliega o reinicia un componente del complemento, el núcleo de Greengrass se reinicia.

    Los componentes del plugin utilizan el mismo archivo de registro que el núcleo de Greengrass. Para obtener más información, consulte Supervisar AWS IoT Greengrass registros.

    No se recomienda utilizar esta opción en las recetas de componentes, ya que está AWS pensada para componentes proporcionados y escritos en Java que interactúan directamente con el núcleo de Greengrass. Para obtener más información sobre qué componentes públicos son complementos, consulte. AWS-componentes proporcionados

  • aws.greengrass.nucleus— El componente del núcleo. Para obtener más información, consulte Núcleo de Greengrass.

    No se recomienda utilizar esta opción en las recetas de componentes. Está diseñado para el componente núcleo de Greengrass, que proporciona la funcionalidad mínima del software AWS IoT Greengrass Core.

El valor predeterminado es aws.greengrass.generic cuando se crea un componente a partir de una receta o aws.greengrass.lambda cuando se crea un componente a partir de una función Lambda.

Para obtener más información, consulte Tipos de componentes.

ComponentSource

(Opcional) La ARN de la función Lambda que ejecuta un componente.

No se recomienda especificar la fuente del componente en una receta. AWS IoT Greengrass establece este parámetro cuando crea un componente a partir de una función Lambda. Para obtener más información, consulte AWS LambdaFunciones de ejecución.

Manifests

Una lista de objetos, cada uno de los cuales define el ciclo de vida, los parámetros y los requisitos del componente para una plataforma. Si un dispositivo principal cumple con los requisitos de plataforma de varios manifiestos, AWS IoT Greengrass utiliza el primer manifiesto que coincida con el dispositivo principal. Para garantizar que los dispositivos principales utilicen el manifiesto correcto, defina primero los manifiestos con requisitos de plataforma más estrictos. Un manifiesto que se aplique a todas las plataformas debe ser el último manifiesto de la lista.

importante

Un dispositivo principal debe cumplir como mínimo los requisitos de plataforma de un manifiesto para instalar el componente. Si ningún manifiesto coincide con el dispositivo principal, el software AWS IoT Greengrass principal no instala el componente y se produce un error en la implementación.

Cada objeto contiene la siguiente información:

Name

(Opcional) Un nombre descriptivo para la plataforma que define este manifiesto.

Si omites este parámetro, AWS IoT Greengrass crea un nombre a partir de la plataforma os yarchitecture.

Platform

(Opcional) Un objeto que define la plataforma a la que se aplica este manifiesto. Omita este parámetro para definir un manifiesto que se aplique a todas las plataformas.

Este objeto especifica los pares clave-valor sobre la plataforma en la que se ejecuta un dispositivo principal. Al implementar este componente, el software AWS IoT Greengrass Core compara estos pares clave-valor con los atributos de la plataforma en el dispositivo principal. El software AWS IoT Greengrass principal siempre define os yarchitecture, y puede definir, atributos adicionales. Puede especificar atributos de plataforma personalizados para un dispositivo principal al implementar el componente núcleo de Greengrass. Para obtener más información, consulte el parámetro de anulación de plataforma del componente núcleo de Greengrass.

Para cada par clave-valor, puede especificar uno de los siguientes valores:

  • Un valor exacto, como linux o. windows Los valores exactos deben empezar por una letra o un número.

  • *, que coincide con cualquier valor. Esto también coincide cuando un valor no está presente.

  • Una expresión regular de estilo Java, como. /windows|linux/ La expresión regular debe empezar y terminar con un carácter de barra (). / Por ejemplo, la expresión regular /.+/ coincide con cualquier valor que no esté en blanco.

Este objeto contiene la siguiente información:

os

(Opcional) El nombre del sistema operativo de la plataforma compatible con este manifiesto. Las plataformas más comunes incluyen los siguientes valores:

  • linux

  • windows

  • darwin (macOS)

architecture

(Opcional) La arquitectura del procesador de la plataforma compatible con este manifiesto. Las arquitecturas comunes incluyen los siguientes valores:

  • amd64

  • arm

  • aarch64

  • x86

architecture.detail

(Opcional) El detalle de la arquitectura del procesador de la plataforma compatible con este manifiesto. Los detalles comunes de la arquitectura incluyen los siguientes valores:

  • arm61

  • arm71

  • arm81

key

(Opcional) Un atributo de plataforma que definas para este manifiesto. Reemplazar key con el nombre del atributo de la plataforma. El software AWS IoT Greengrass Core hace coincidir este atributo de plataforma con los pares clave-valor que especifique en la configuración del componente núcleo de Greengrass. Para obtener más información, consulte el parámetro de anulación de plataforma del componente núcleo de Greengrass.

sugerencia

Utilice el formato de nombre de dominio inverso para evitar colisiones de nombres dentro de su empresa. Por ejemplo, si su empresa es propietaria de un proyecto de radio example.com y usted trabaja en él, puede asignar un nombre a un atributo com.example.radio.RadioModule de plataforma personalizado. Esto ayuda a evitar colisiones entre los nombres de los atributos de la plataforma en su empresa.

Por ejemplo, puede definir un atributo de plataforma,com.example.radio.RadioModule, para especificar un manifiesto diferente en función del módulo de radio que esté disponible en un dispositivo principal. Cada manifiesto puede incluir diferentes artefactos que se apliquen a distintas configuraciones de hardware, de modo que se pueda implementar el conjunto mínimo de software en el dispositivo principal.

Lifecycle

Un objeto o cadena que define cómo instalar y ejecutar el componente en la plataforma que define este manifiesto. También puede definir un ciclo de vida global que se aplique a todas las plataformas. El dispositivo principal utiliza el ciclo de vida global solo si el manifiesto que se va a utilizar no especifica un ciclo de vida.

nota

Este ciclo de vida se define en un manifiesto. Los pasos del ciclo de vida que especifique aquí se aplican únicamente a la plataforma que define este manifiesto. También puede definir un ciclo de vida global que se aplique a todas las plataformas.

Este objeto o cadena contiene la siguiente información:

Setenv

(Opcional) Un diccionario de variables de entorno para proporcionarlo a todos los scripts del ciclo de vida. Puede anular estas variables de entorno Setenv en cada script de ciclo de vida.

install

(Opcional) Un objeto o una cadena que define el script que se ejecutará cuando se instale el componente. El software AWS IoT Greengrass principal también ejecuta este paso del ciclo de vida cada vez que se inicia el software.

Si el install script se cierra con un código de éxito, el componente entra en ese INSTALLED estado.

Este objeto o cadena contiene la siguiente información:

Script

El script que se va a ejecutar.

RequiresPrivilege

(Opcional) Puede ejecutar el script con privilegios de root. Si establece esta opción entrue, el software AWS IoT Greengrass principal ejecutará este script de ciclo de vida como root en lugar de como el usuario del sistema que usted configure para ejecutar este componente. El valor predeterminado es false.

Skipif

(Opcional) La comprobación para determinar si se debe ejecutar o no el script. Puede definirlo para comprobar si hay un ejecutable en la ruta o si existe un archivo. Si el resultado es verdadero, el software AWS IoT Greengrass Core omite el paso. Seleccione una de las siguientes comprobaciones:

  • onpath runnable— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselo onpath python3 para omitir este paso del ciclo de vida si Python 3 está disponible.

  • exists file— Comprueba si existe un archivo. Por ejemplo, úselo exists /tmp/my-configuration.db para omitir este paso del ciclo de vida si /tmp/my-configuration.db está presente.

Timeout

(Opcional) El tiempo máximo en segundos que puede ejecutarse el script antes de que el software AWS IoT Greengrass principal finalice el proceso.

Predeterminado: 120 segundos

Setenv

(Opcional) El diccionario de variables de entorno que se proporcionará al script. Estas variables de entorno anulan las variables que usted proporciona. Lifecycle.Setenv

run

(Opcional) Un objeto o una cadena que define el script que se ejecutará cuando se inicie el componente.

El componente entra en ese RUNNING estado cuando se ejecuta este paso del ciclo de vida. Si el run script sale con un código de éxito, el componente entra en ese STOPPING estado. Si se especifica un shutdown script, se ejecuta; de lo contrario, el componente entra en ese FINISHED estado.

Los componentes que dependen de este componente se inician cuando se ejecuta este paso del ciclo de vida. Para ejecutar un proceso en segundo plano, como un servicio que utilizan los componentes dependientes, utilice el paso del startup ciclo de vida en su lugar.

Al implementar componentes con un run ciclo de vida, el dispositivo principal puede declarar que la implementación se ha completado en cuanto se ejecute este script de ciclo de vida. Como resultado, la implementación puede completarse y realizarse correctamente incluso si el script de run ciclo de vida falla poco después de ejecutarse. Si desea que el estado de la implementación dependa del resultado del script de inicio del componente, utilice el paso del startup ciclo de vida en su lugar.

nota

Puede definir solo uno startup o un run ciclo de vida.

Este objeto o cadena contiene la siguiente información:

Script

El script que se va a ejecutar.

RequiresPrivilege

(Opcional) Puede ejecutar el script con privilegios de root. Si establece esta opción entrue, el software AWS IoT Greengrass principal ejecutará este script de ciclo de vida como root en lugar de como el usuario del sistema que usted configure para ejecutar este componente. El valor predeterminado es false.

Skipif

(Opcional) La comprobación para determinar si se debe ejecutar o no el script. Puede definirlo para comprobar si hay un ejecutable en la ruta o si existe un archivo. Si el resultado es verdadero, el software AWS IoT Greengrass Core omite el paso. Seleccione una de las siguientes comprobaciones:

  • onpath runnable— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselo onpath python3 para omitir este paso del ciclo de vida si Python 3 está disponible.

  • exists file— Comprueba si existe un archivo. Por ejemplo, úselo exists /tmp/my-configuration.db para omitir este paso del ciclo de vida si /tmp/my-configuration.db está presente.

Timeout

(Opcional) El tiempo máximo en segundos que puede ejecutarse el script antes de que el software AWS IoT Greengrass principal finalice el proceso.

Este paso del ciclo de vida no agota el tiempo de espera de forma predeterminada. Si omite este tiempo de espera, el run script se ejecutará hasta que finalice.

Setenv

(Opcional) El diccionario de variables de entorno que se proporcionará al script. Estas variables de entorno anulan las variables que usted proporciona. Lifecycle.Setenv

startup

(Opcional) Un objeto o cadena que define el proceso en segundo plano que se ejecutará cuando se inicie el componente.

Se utiliza startup para ejecutar un comando que debe cerrarse correctamente o para actualizar el estado del componente RUNNING antes de que puedan iniciarse los componentes dependientes. Utilice la UpdateStateIPCoperación para establecer el estado del componente como RUNNING o ERRORED cuando el componente inicie un script que no se cierre. Por ejemplo, puede definir un startup paso que inicie el SQL proceso Mi con/etc/init.d/mysqld start.

El componente entra en ese STARTING estado cuando se ejecuta este paso del ciclo de vida. Si el startup script sale con un código de éxito, el componente entra en ese RUNNING estado. A continuación, se pueden iniciar los componentes dependientes.

Al implementar componentes con un startup ciclo de vida, el dispositivo principal puede declarar que la implementación se ha completado una vez que este script de ciclo de vida finaliza o informa de su estado. En otras palabras, el estado de la implementación es IN_PROGRESS hasta que los scripts de inicio de todos los componentes se cierren o notifiquen un estado.

nota

Solo puede definir uno startup o un run ciclo de vida.

Este objeto o cadena contiene la siguiente información:

Script

El script que se va a ejecutar.

RequiresPrivilege

(Opcional) Puede ejecutar el script con privilegios de root. Si establece esta opción entrue, el software AWS IoT Greengrass principal ejecutará este script de ciclo de vida como root en lugar de como el usuario del sistema que usted configure para ejecutar este componente. El valor predeterminado es false.

Skipif

(Opcional) La comprobación para determinar si se debe ejecutar o no el script. Puede definirlo para comprobar si hay un ejecutable en la ruta o si existe un archivo. Si el resultado es verdadero, el software AWS IoT Greengrass Core omite el paso. Seleccione una de las siguientes comprobaciones:

  • onpath runnable— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselo onpath python3 para omitir este paso del ciclo de vida si Python 3 está disponible.

  • exists file— Comprueba si existe un archivo. Por ejemplo, úselo exists /tmp/my-configuration.db para omitir este paso del ciclo de vida si /tmp/my-configuration.db está presente.

Timeout

(Opcional) El tiempo máximo en segundos que puede ejecutarse el script antes de que el software AWS IoT Greengrass principal finalice el proceso.

Predeterminado: 120 segundos

Setenv

(Opcional) El diccionario de variables de entorno que se proporcionará al script. Estas variables de entorno anulan las variables que usted proporciona. Lifecycle.Setenv

shutdown

(Opcional) Un objeto o una cadena que define el script que se ejecutará cuando el componente se apague. Utilice el ciclo de vida de apagado para ejecutar el código que desee ejecutar cuando el componente esté en ese STOPPING estado. El ciclo de vida de apagado se puede utilizar para detener un proceso iniciado por los run scripts startup o.

Si inicia un proceso en segundo planostartup, utilice el shutdown paso para detener ese proceso cuando el componente se apague. Por ejemplo, puede definir un shutdown paso que detenga el SQL proceso Mi con/etc/init.d/mysqld stop.

El shutdown script se ejecuta después de que el componente entre en STOPPING ese estado. Si el script se completa correctamente, el componente entra en el FINISHED estado.

Este objeto o cadena contiene la siguiente información:

Script

El script que se va a ejecutar.

RequiresPrivilege

(Opcional) Puede ejecutar el script con privilegios de root. Si establece esta opción entrue, el software AWS IoT Greengrass principal ejecutará este script de ciclo de vida como root en lugar de como el usuario del sistema que usted configure para ejecutar este componente. El valor predeterminado es false.

Skipif

(Opcional) La comprobación para determinar si se debe ejecutar o no el script. Puede definirlo para comprobar si hay un ejecutable en la ruta o si existe un archivo. Si el resultado es verdadero, el software AWS IoT Greengrass Core omite el paso. Seleccione una de las siguientes comprobaciones:

  • onpath runnable— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselo onpath python3 para omitir este paso del ciclo de vida si Python 3 está disponible.

  • exists file— Comprueba si existe un archivo. Por ejemplo, úselo exists /tmp/my-configuration.db para omitir este paso del ciclo de vida si /tmp/my-configuration.db está presente.

Timeout

(Opcional) El tiempo máximo en segundos que puede ejecutarse el script antes de que el software AWS IoT Greengrass principal finalice el proceso.

Predeterminado: 15 segundos.

Setenv

(Opcional) El diccionario de variables de entorno que se proporcionará al script. Estas variables de entorno anulan las variables que usted proporciona. Lifecycle.Setenv

recover

(Opcional) Un objeto o una cadena que define el script que se ejecutará cuando el componente detecte un error.

Este paso se ejecuta cuando un componente entra en el ERRORED estado. Si el componente pasa ERRORED tres veces sin recuperarse correctamente, el componente cambia al BROKEN estado. Para corregir un BROKEN componente, debe volver a desplegarlo.

Este objeto o cadena contiene la siguiente información:

Script

El script que se va a ejecutar.

RequiresPrivilege

(Opcional) Puede ejecutar el script con privilegios de root. Si establece esta opción entrue, el software AWS IoT Greengrass principal ejecutará este script de ciclo de vida como root en lugar de como el usuario del sistema que usted configure para ejecutar este componente. El valor predeterminado es false.

Skipif

(Opcional) La comprobación para determinar si se debe ejecutar o no el script. Puede definirlo para comprobar si hay un ejecutable en la ruta o si existe un archivo. Si el resultado es verdadero, el software AWS IoT Greengrass Core omite el paso. Seleccione una de las siguientes comprobaciones:

  • onpath runnable— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselo onpath python3 para omitir este paso del ciclo de vida si Python 3 está disponible.

  • exists file— Comprueba si existe un archivo. Por ejemplo, úselo exists /tmp/my-configuration.db para omitir este paso del ciclo de vida si /tmp/my-configuration.db está presente.

Timeout

(Opcional) El tiempo máximo en segundos que puede ejecutarse el script antes de que el software AWS IoT Greengrass principal finalice el proceso.

Valor predeterminado: 60 segundos.

Setenv

(Opcional) El diccionario de variables de entorno que se va a proporcionar al script. Estas variables de entorno anulan las variables que usted proporciona. Lifecycle.Setenv

bootstrap

(Opcional) Un objeto o una cadena que define un script que requiere el reinicio del software AWS IoT Greengrass principal o del dispositivo principal. Esto le permite desarrollar un componente que se reinicie después de instalar las actualizaciones del sistema operativo o las actualizaciones del tiempo de ejecución, por ejemplo.

nota

Para instalar actualizaciones o dependencias que no requieran que el software o dispositivo AWS IoT Greengrass principal se reinicie, utilice el ciclo de vida de instalación.

Este paso del ciclo de vida se ejecuta antes del paso del ciclo de vida de la instalación en los siguientes casos cuando el software AWS IoT Greengrass principal implementa el componente:

  • El componente se implementa en el dispositivo principal por primera vez.

  • La versión del componente cambia.

  • El script de arranque cambia como resultado de una actualización de la configuración del componente.

Una vez que el software AWS IoT Greengrass principal complete el paso de arranque de todos los componentes que tengan un paso de arranque en una implementación, el software se reinicia.

importante

Debe configurar el software AWS IoT Greengrass Core como un servicio del sistema para reiniciar el software AWS IoT Greengrass Core o el dispositivo principal. Si no configura el software AWS IoT Greengrass principal como un servicio del sistema, el software no se reiniciará. Para obtener más información, consulte Configurar el núcleo de Greengrass como un servicio del sistema.

Este objeto o cadena contiene la siguiente información:

BootstrapOnRollback
nota

Cuando esta función está habilitada, solo BootstrapOnRollback se ejecutará en los componentes que hayan completado o intentado ejecutar los pasos del ciclo de vida del arranque como parte de una implementación de destino fallida. Esta función está disponible para las versiones 2.12.0 y posteriores del núcleo de Greengrass.

(Opcional) Puede ejecutar los pasos del ciclo de vida de bootstrap como parte de una implementación de reversión. Si configuras esta opción entrue, se ejecutarán los pasos del ciclo de vida del arranque definidos en una implementación de reversión. Cuando se produce un error en una implementación, la versión anterior del ciclo de vida de arranque del componente se volverá a ejecutar durante una implementación de reversión.

El valor predeterminado es false.

Script

El script que se va a ejecutar. El código de salida de este script define la instrucción de reinicio. Utilice los siguientes códigos de salida:

  • 0— No reinicie el software AWS IoT Greengrass principal ni el dispositivo principal. El software AWS IoT Greengrass principal se sigue reiniciando después del arranque de todos los componentes.

  • 100— Solicitud para reiniciar el software AWS IoT Greengrass Core.

  • 101— Solicitud para reiniciar el dispositivo principal.

Los códigos de salida 100 a 199 están reservados para un comportamiento especial. Otros códigos de salida representan errores de script.

RequiresPrivilege

(Opcional) Puede ejecutar el script con privilegios de root. Si establece esta opción entrue, el software AWS IoT Greengrass principal ejecutará este script de ciclo de vida como root en lugar de como el usuario del sistema que usted configure para ejecutar este componente. El valor predeterminado es false.

Timeout

(Opcional) El tiempo máximo en segundos que puede ejecutarse el script antes de que el software AWS IoT Greengrass principal finalice el proceso.

Predeterminado: 120 segundos

Setenv

(Opcional) El diccionario de variables de entorno que se proporcionará al script. Estas variables de entorno anulan las variables que usted proporciona. Lifecycle.Setenv

Selections

(Opcional) Una lista de claves de selección que especifican las secciones del ciclo de vida global que se van a ejecutar en este manifiesto. En el ciclo de vida global, puedes definir los pasos del ciclo de vida con claves de selección en cualquier nivel para seleccionar subsecciones del ciclo de vida. A continuación, el dispositivo principal utiliza las secciones que coinciden con las claves de selección de este manifiesto. Para obtener más información, consulta los ejemplos del ciclo de vida global.

importante

El dispositivo principal utiliza las selecciones del ciclo de vida global solo si este manifiesto no define un ciclo de vida.

Puedes especificar la clave de all selección para ejecutar secciones del ciclo de vida global que no tienen claves de selección.

Artifacts

(Opcional) Una lista de objetos, cada uno de los cuales define un artefacto binario para el componente de la plataforma que define este manifiesto. Por ejemplo, puede definir el código o las imágenes como artefactos.

Cuando el componente se despliega, el software AWS IoT Greengrass principal descarga el artefacto en una carpeta del dispositivo principal. También puede definir los artefactos como archivos de almacenamiento que el software extrae después de descargarlos.

Puede utilizar variables de receta para obtener las rutas a las carpetas en las que se instalan los artefactos en el dispositivo principal.

  • Archivos normales: utilice la variable de receta artifacts:path para obtener la ruta a la carpeta que contiene los artefactos. Por ejemplo, especifique {artifacts:path}/my_script.py en una receta cómo obtener la ruta a un artefacto que tenga la. URI s3://amzn-s3-demo-bucket/path/to/my_script.py

  • Archivos extraídos: utilice la variable artifacts: decompressedPath recipe para obtener la ruta a la carpeta que contiene los artefactos de archivo extraídos. El software AWS IoT Greengrass Core extrae cada archivo a una carpeta con el mismo nombre que el archivo. Por ejemplo, especifique {artifacts:decompressedPath}/my_archive/my_script.py en una receta la ruta al my_script.py artefacto de archivo que contiene el URIs3://amzn-s3-demo-bucket/path/to/my_archive.zip.

nota

Cuando desarrolla un componente con un artefacto de archivo en un dispositivo central local, es posible que no tenga uno URI para ese artefacto. Para probar el componente con una Unarchive opción que extraiga el artefacto, especifique un URI lugar en el que el nombre del archivo de archivo coincida con el nombre del archivo del artefacto archivado. Puede especificar el URI lugar en el que desea cargar el artefacto de archivo o puede especificar un nuevo marcador de posición. URI Por ejemplo, para extraer el my_archive.zip artefacto durante una implementación local, puede especificarlo. s3://amzn-s3-demo-bucket/my_archive.zip

Cada objeto contiene la siguiente información:

URI

El URI de un artefacto en un depósito de S3. El software AWS IoT Greengrass Core extrae el artefacto de allí URI cuando se instala el componente, a menos que el artefacto ya exista en el dispositivo. Cada artefacto debe tener un nombre de archivo único en cada manifiesto.

Unarchive

(Opcional) El tipo de archivo que se va a desempaquetar. Puede elegir entre las siguientes opciones:

  • NONE— El archivo no es un archivo para desempaquetar. El software AWS IoT Greengrass Core instala el artefacto en una carpeta del dispositivo principal. Puede usar la variable de receta artifacts:path para obtener la ruta a esta carpeta.

  • ZIP— El fichero es un archivo. ZIP El software AWS IoT Greengrass Core extrae el archivo a una carpeta con el mismo nombre que el archivo. Puede utilizar la variable artifacts: decompressedPath recipe para obtener la ruta a la carpeta que contiene esta carpeta.

El valor predeterminado es NONE.

Permission

(Opcional) Un objeto que define los permisos de acceso que se van a establecer para este archivo de artefactos. Puede establecer el permiso de lectura y el permiso de ejecución.

nota

No puedes configurar el permiso de escritura porque el software AWS IoT Greengrass Core no permite que los componentes editen los archivos de artefactos de la carpeta de artefactos. Para editar un archivo de artefactos de un componente, cópielo en otra ubicación o publique e implemente un nuevo archivo de artefactos.

Si define un artefacto como un archivo para desempaquetar, el software AWS IoT Greengrass Core establece estos permisos de acceso en los archivos que desempaquete del archivo. El software AWS IoT Greengrass Core establece los permisos de acceso de la carpeta en para ALL y. Read Execute Esto permite a los componentes ver los archivos desempaquetados de la carpeta. Para establecer los permisos en los archivos individuales del archivo, puede configurarlos en el script del ciclo de vida de la instalación.

Este objeto contiene la siguiente información:

Read

(Opcional) El permiso de lectura que se debe configurar para este archivo de artefactos. Para permitir que otros componentes accedan a este artefacto, como los componentes que dependen de este componente, especifique. ALL Puede elegir entre las siguientes opciones:

  • NONE— El archivo no se puede leer.

  • OWNER— El usuario del sistema que haya configurado para ejecutar este componente puede leer el archivo.

  • ALL— Todos los usuarios pueden leer el archivo.

El valor predeterminado es OWNER.

Execute

(Opcional) El permiso de ejecución que se debe configurar para este archivo de artefactos. El Execute permiso implica el Read permiso. Por ejemplo, si especifica ALL paraExecute, todos los usuarios podrán leer y ejecutar este archivo de artefactos.

Puede elegir entre las siguientes opciones:

  • NONE— El archivo no se puede ejecutar.

  • OWNER— El usuario del sistema que usted configure para ejecutar el componente puede ejecutar el archivo.

  • ALL— Todos los usuarios pueden ejecutar el archivo.

El valor predeterminado es NONE.

Digest

(Solo lectura) El hash criptográfico resumido del artefacto. Al crear un componente, AWS IoT Greengrass utiliza un algoritmo de hash para calcular el hash del archivo del artefacto. A continuación, al implementar el componente, el núcleo de Greengrass calcula el hash del artefacto descargado y lo compara con este resumen para verificar el artefacto antes de la instalación. Si el hash no coincide con el resumen, se produce un error en la implementación.

Si establece este parámetro, AWS IoT Greengrass reemplaza el valor que estableció al crear el componente.

Algorithm

(Solo lectura) El algoritmo de hash que se AWS IoT Greengrass utiliza para calcular el hash resumido del artefacto.

Si establece este parámetro, AWS IoT Greengrass reemplaza el valor que estableció al crear el componente.

Lifecycle

Objeto que define cómo instalar y ejecutar el componente. El dispositivo principal usa el ciclo de vida global solo si el manifiesto que se va a usar no especifica un ciclo de vida.

nota

Este ciclo de vida se define fuera de un manifiesto. También puedes definir un ciclo de vida del manifiesto que se aplique a las plataformas que coincidan con ese manifiesto.

En el ciclo de vida global, puedes especificar los ciclos de vida que se ejecutan para determinadas claves de selección que especificas en cada manifiesto. Las claves de selección son cadenas que identifican las secciones del ciclo de vida global que se van a ejecutar en cada manifiesto.

La clave all de selección es la predeterminada en cualquier sección sin una clave de selección. Esto significa que puedes especificar la clave de all selección en un manifiesto para ejecutar las secciones del ciclo de vida global sin claves de selección. No es necesario especificar la clave de all selección en el ciclo de vida global.

Si un manifiesto no define un ciclo de vida o claves de selección, el dispositivo principal utilizará la all selección de forma predeterminada. Esto significa que, en este caso, el dispositivo principal usa las secciones del ciclo de vida global que no usan claves de selección.

Este objeto contiene la misma información que el ciclo de vida del manifiesto, pero puedes especificar las claves de selección en cualquier nivel para seleccionar subsecciones del ciclo de vida.

sugerencia

Le recomendamos que utilice solo letras minúsculas para cada clave de selección para evitar conflictos entre las claves de selección y las claves del ciclo de vida. Las claves de ciclo de vida comienzan con una letra mayúscula.

ejemplo Ejemplo de ciclo de vida global con claves de selección de nivel superior
Lifecycle: key1: install: Skipif: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: command3
ejemplo Ejemplo de ciclo de vida global con claves de selección de nivel inferior
Lifecycle: install: Script: key1: command1 key2: command2 all: command3
ejemplo Ejemplo de ciclo de vida global con varios niveles de claves de selección
Lifecycle: key1: install: Skipif: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: key3: command3 key4: command4 all: command5

Variables de receta

Las variables de receta exponen la información del componente y el núcleo actuales para que la utilice en sus recetas. Por ejemplo, puede usar una variable de receta para pasar los parámetros de configuración de los componentes a una aplicación que ejecute en un script de ciclo de vida.

Puede usar variables de receta en las siguientes secciones de recetas de componentes:

Las variables de receta utilizan {recipe_variable} la sintaxis. Los corchetes indican una variable de receta.

AWS IoT Greengrass admite las siguientes variables de receta:

component_dependency_name:configuration:json_pointer

El valor de un parámetro de configuración para el componente que define esta receta o para un componente del que depende este componente.

Puede utilizar esta variable para proporcionar un parámetro a un script que ejecute en el ciclo de vida del componente.

nota

AWS IoT Greengrass admite esta variable de receta solo en las definiciones del ciclo de vida de los componentes.

Esta variable de receta tiene las siguientes entradas:

  • component_dependency_name— (Opcional) El nombre de la dependencia del componente que se va a consultar. Omita este segmento para consultar el componente que define esta receta. Solo puede especificar las dependencias directas.

  • json_pointer— El JSON puntero al valor de configuración que se va a evaluar. JSONlos punteros comienzan con una barra inclinada / hacia adelante. Para identificar un valor en una configuración de componentes anidados, utilice barras diagonales (/) para separar las claves de cada nivel de la configuración. Puede usar un número como clave para especificar un índice en una lista. Para obtener más información, consulte la especificación del JSON puntero.

    AWS IoT Greengrass Core usa JSON punteros para las recetas en YAML formato.

El JSON puntero puede hacer referencia a los siguientes tipos de nodos:

  • Un nodo de valor. AWS IoT Greengrass Core reemplaza la variable de receta por la representación en cadena del valor. Los valores nulos se null convierten en una cadena.

  • Un nodo de objeto. AWS IoT Greengrass Core reemplaza la variable de receta por la representación de JSON cadena serializada de ese objeto.

  • Sin nodo. AWS IoT Greengrass Core no reemplaza la variable de receta.

Por ejemplo, la variable de {configuration:/Message} receta recupera el valor de la Message clave en la configuración del componente. La variable de {com.example.MyComponentDependency:configuration:/server/port} receta recupera el valor del objeto port de server configuración de una dependencia de un componente.

component_dependency_name:artifacts:path

La ruta raíz de los artefactos del componente que define esta receta o de un componente del que depende este componente.

Cuando se instala un componente, AWS IoT Greengrass copia los artefactos del componente en la carpeta que expone esta variable. Puede utilizar esta variable para identificar la ubicación de un script que se va a ejecutar en el ciclo de vida del componente, por ejemplo.

La carpeta de esta ruta es de solo lectura. Para modificar los archivos de artefactos, cópielos en otra ubicación, como el directorio de trabajo actual ($PWDo). . A continuación, modifique los archivos allí.

Para leer o ejecutar un artefacto desde una dependencia de un componente, debe ser el artefacto Read o el Execute permiso de ese artefacto. ALL Para obtener más información, consulta los permisos de artefactos que definas en la receta del componente.

Esta variable de receta tiene las siguientes entradas:

  • component_dependency_name— (Opcional) El nombre de la dependencia del componente que se va a consultar. Omita este segmento para consultar el componente que define esta receta. Solo puede especificar las dependencias directas.

component_dependency_name:artifacts:decompressedPath

La ruta raíz de los artefactos de archivo descomprimidos para el componente que define esta receta o para un componente del que depende este componente.

Cuando se instala un componente, AWS IoT Greengrass desempaqueta los artefactos de archivo del componente en la carpeta que expone esta variable. Puede utilizar esta variable para identificar la ubicación de un script que se va a ejecutar en el ciclo de vida del componente, por ejemplo.

Cada artefacto se descomprime en una carpeta dentro de la ruta descomprimida, donde la carpeta tiene el mismo nombre que el artefacto menos su extensión. Por ejemplo, un ZIP artefacto llamado se descomprime en la carpeta. models.zip {artifacts:decompressedPath}/models

La carpeta de esta ruta es de solo lectura. Para modificar los archivos de artefactos, cópielos en otra ubicación, como el directorio de trabajo actual ($PWDo). . A continuación, modifique los archivos allí.

Para leer o ejecutar un artefacto desde una dependencia de un componente, debe ser el artefacto Read o el Execute permiso de ese artefacto. ALL Para obtener más información, consulta los permisos de artefactos que definas en la receta del componente.

Esta variable de receta tiene las siguientes entradas:

  • component_dependency_name— (Opcional) El nombre de la dependencia del componente que se va a consultar. Omita este segmento para consultar el componente que define esta receta. Solo puede especificar las dependencias directas.

component_dependency_name:work:path

Esta función está disponible para la versión 2.0.4 y versiones posteriores del componente núcleo de Greengrass.

La ruta de trabajo del componente que define esta receta o de un componente del que depende este componente. El valor de esta variable de receta equivale a la salida de la variable de $PWD entorno y del comando pwd cuando se ejecuta desde el contexto del componente.

Puede usar esta variable de receta para compartir archivos entre un componente y una dependencia.

El componente que define esta receta y los demás componentes que se ejecutan como el mismo usuario y grupo pueden leer y escribir en la carpeta de esta ruta.

Esta variable de receta tiene las siguientes entradas:

  • component_dependency_name— (Opcional) El nombre de la dependencia del componente que se va a consultar. Omita este segmento para consultar el componente que define esta receta. Solo puede especificar las dependencias directas.

kernel:rootPath

La ruta raíz AWS IoT Greengrass principal.

iot:thingName

Esta función está disponible para la versión 2.3.0 y versiones posteriores del componente núcleo de Greengrass.

El nombre del dispositivo principal. AWS IoT

Ejemplos de recetas

Puede hacer referencia a los siguientes ejemplos de recetas para ayudarle a crear recetas para sus componentes.

AWS IoT Greengrass selecciona un índice de componentes de Greengrass, denominado Catálogo de software de Greengrass. Este catálogo rastrea los componentes de Greengrass desarrollados por la comunidad de Greengrass. Desde este catálogo, puede descargar, modificar e implementar componentes para crear sus aplicaciones de Greengrass. Para obtener más información, consulte Componentes de la comunidad.

Receta de componentes de Hello World

La siguiente receta describe un componente de Hello World que ejecuta un script de Python. Este componente es compatible con todas las plataformas y acepta un Message parámetro que AWS IoT Greengrass pasa como argumento al script de Python. Esta es la receta del componente Hello World del tutorial de introducción.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"

Ejemplo de componente de tiempo de ejecución de Python

La siguiente receta describe un componente que instala Python. Este componente es compatible con dispositivos Linux de 64 bits.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.PythonRuntime", "ComponentDescription": "Installs Python 3.7", "ComponentPublisher": "Amazon", "ComponentVersion": "3.7.0", "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": "apt-get update\napt-get install python3.7" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.PythonRuntime ComponentDescription: Installs Python 3.7 ComponentPublisher: Amazon ComponentVersion: '3.7.0' Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: | apt-get update apt-get install python3.7

Receta de componente que especifica varios campos

La siguiente receta de componentes utiliza varios campos de receta.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.FooService", "ComponentDescription": "Complete recipe for AWS IoT Greengrass components", "ComponentPublisher": "Amazon", "ComponentVersion": "1.0.0", "ComponentConfiguration": { "DefaultConfiguration": { "TestParam": "TestValue" } }, "ComponentDependencies": { "BarService": { "VersionRequirement": "^1.1.0", "DependencyType": "SOFT" }, "BazService": { "VersionRequirement": "^2.0.0" } }, "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git" }, "Setenv": { "environment_variable1": "variable_value1", "environment_variable2": "variable_value2" } }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/hello_world.zip", "Unarchive": "ZIP" }, { "URI": "s3://amzn-s3-demo-bucket/hello_world_linux.py" } ] }, { "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git", "RequiresPrivilege": "true" } }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/hello_world.py" } ] } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.FooService ComponentDescription: Complete recipe for AWS IoT Greengrass components ComponentPublisher: Amazon ComponentVersion: 1.0.0 ComponentConfiguration: DefaultConfiguration: TestParam: TestValue ComponentDependencies: BarService: VersionRequirement: ^1.1.0 DependencyType: SOFT BazService: VersionRequirement: ^2.0.0 Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: Skipif: onpath git Script: sudo apt-get install git Setenv: environment_variable1: variable_value1 environment_variable2: variable_value2 Artifacts: - URI: 's3://amzn-s3-demo-bucket/hello_world.zip' Unarchive: ZIP - URI: 's3://amzn-s3-demo-bucket/hello_world_linux.py' - Lifecycle: install: Skipif: onpath git Script: sudo apt-get install git RequiresPrivilege: 'true' Artifacts: - URI: 's3://amzn-s3-demo-bucket/hello_world.py'