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 JSON
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 componentecom.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. ElComponentSource
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 oaws.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 atributocom.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 eseINSTALLED
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 en
true
, 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 esfalse
. 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
— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselorunnable
onpath python3
para omitir este paso del ciclo de vida si Python 3 está disponible. -
exists
— Comprueba si existe un archivo. Por ejemplo, úselofile
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 elrun
script sale con un código de éxito, el componente entra en eseSTOPPING
estado. Si se especifica unshutdown
script, se ejecuta; de lo contrario, el componente entra en eseFINISHED
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 derun
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 delstartup
ciclo de vida en su lugar.nota
Puede definir solo uno
startup
o unrun
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 en
true
, 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 esfalse
. 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
— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselorunnable
onpath python3
para omitir este paso del ciclo de vida si Python 3 está disponible. -
exists
— Comprueba si existe un archivo. Por ejemplo, úselofile
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 componenteRUNNING
antes de que puedan iniciarse los componentes dependientes. Utilice la UpdateStateIPCoperación para establecer el estado del componente comoRUNNING
oERRORED
cuando el componente inicie un script que no se cierre. Por ejemplo, puede definir unstartup
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 elstartup
script sale con un código de éxito, el componente entra en eseRUNNING
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 esIN_PROGRESS
hasta que los scripts de inicio de todos los componentes se cierren o notifiquen un estado.nota
Solo puede definir uno
startup
o unrun
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 en
true
, 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 esfalse
. 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
— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselorunnable
onpath python3
para omitir este paso del ciclo de vida si Python 3 está disponible. -
exists
— Comprueba si existe un archivo. Por ejemplo, úselofile
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 losrun
scriptsstartup
o.Si inicia un proceso en segundo plano
startup
, utilice elshutdown
paso para detener ese proceso cuando el componente se apague. Por ejemplo, puede definir unshutdown
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 enSTOPPING
ese estado. Si el script se completa correctamente, el componente entra en elFINISHED
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 en
true
, 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 esfalse
. 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
— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselorunnable
onpath python3
para omitir este paso del ciclo de vida si Python 3 está disponible. -
exists
— Comprueba si existe un archivo. Por ejemplo, úselofile
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 pasaERRORED
tres veces sin recuperarse correctamente, el componente cambia alBROKEN
estado. Para corregir unBROKEN
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 en
true
, 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 esfalse
. 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
— Compruebe si hay un ejecutable en la ruta del sistema. Por ejemplo, úselorunnable
onpath python3
para omitir este paso del ciclo de vida si Python 3 está disponible. -
exists
— Comprueba si existe un archivo. Por ejemplo, úselofile
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 en
true
, 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 en
true
, 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 esfalse
. 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. URIs3://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 almy_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 elmy_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 elRead
permiso. Por ejemplo, si especificaALL
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 deall
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 deall
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 existsfile
Script: command1 key2: install: Script: command2 all: install: Script: command3ejemplo 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 existsfile
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:
-
Definiciones del ciclo de vida.
-
Definiciones de configuración de componentes, si utiliza Greengrass nucleus v2.6.0 o posterior y establece la interpolateComponentConfigurationopción de configuración en.
true
También puede usar variables de receta al implementar las actualizaciones de configuración de los 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 laMessage
clave en la configuración del componente. La variable de{com.example.MyComponentDependency:configuration:/server/port}
receta recupera el valor del objetoport
deserver
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 (
$PWD
o)..
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 elExecute
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 (
$PWD
o)..
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 elExecute
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 pwdcuando 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.
Temas
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.
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.
Receta de componente que especifica varios campos
La siguiente receta de componentes utiliza varios campos de receta.