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.
Paso 5: Crear un componente en el servicio de AWS IoT Greengrass
Cuando termine de desarrollar un componente en su dispositivo principal, puede cargarlo en el servicio de AWS IoT Greengrass en Nube de AWS. También puede crear el componente directamente en la consola de AWS IoT Greengrass
-
Carga de artefactos de componentes en un bucket de S3.
-
Agregue el URI de Amazon Simple Storage Service (Amazon S3) de cada artefacto a la receta del componente.
-
Cree un componente en AWS IoT Greengrass a partir de la receta del componente.
En esta sección, debe completar estos pasos en su dispositivo principal de Greengrass para cargar su componente Hello World en el servicio de AWS IoT Greengrass.
-
Utilice un bucket S3 en su cuenta de AWS para alojar los artefactos de los componentes de AWS IoT Greengrass. Al implementar el componente en un dispositivo principal, el dispositivo descarga los artefactos del componente del bucket.
Puede crear un nuevo bucket de S3 o utilizar un bucket existente.
-
En la consola de Amazon S3
, en Buckets, elija Crear bucket. -
En Nombre del bucket, escriba un nombre único para el bucket. Por ejemplo, puede utilizar
greengrass-component-artifacts-. Sustituyaregion-123456789012123456789012por el identificador de su cuenta de AWS yla regióncon la Región de AWS que utilizó en este tutorial. -
Para la región de AWS, seleccione la región de AWS que utilizó para este tutorial.
-
Elija Crear bucket.
-
En Buckets, elija el bucket que ha creado y cargue el script
hello_world.pyen la carpetaartifacts/com.example.HelloWorld/1.0.0del bucket. Para obtener más información acerca de cómo cargar objetos a buckets de S3, consulte Carga de objetos en la Guía del usuario de Amazon Simple Storage Service. -
Copie el URI de S3 del objeto
hello_world.pyen el bucket de S3. Este URI debería parecerse al siguiente ejemplo. Sustituya amzn-s3-demo-bucket por el nombre de su bucket de S3.s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
-
-
Permita que el dispositivo principal acceda a los artefactos de los componentes del bucket de S3.
Cada dispositivo principal tiene un rol de IAM del dispositivo principal que le permite interactuar con los registros AWS IoT y enviarlos a la nube de AWS. Este rol de dispositivo no permite el acceso a los bucket de S3 de forma predeterminada, por lo que debe crear y adjuntar una política que permita que el dispositivo principal recupere artefactos de componentes del bucket de S3.
Puede omitir este paso si el rol de su dispositivo ya permite acceder al bucket de S3. De lo contrario, cree una política de IAM que permita el acceso y adjúntela al rol, de la siguiente manera:
-
En el panel de navegación de la consola de IAM
, elija Políticas, seguido de Crear política. -
En la pestaña JSON, reemplace el contenido del marcador de posición por la política siguiente. Reemplace amzn-s3-demo-bucket por el nombre del bucket de S3 que contiene los artefactos de los componentes para que los descargue el dispositivo principal.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] } -
Elija Siguiente.
-
En la sección Detalles de política, en Nombre, introduzca
MyGreengrassV2ComponentArtifactPolicy. -
Elija Crear política.
-
En el menú de navegación de la consola de IAM
, seleccione Rol y, a continuación, elija el nombre del rol para el dispositivo principal. Especificó este nombre de rol al instalar el software AWS IoT Greengrass Core. Si no especifica un nombre, el nombre predeterminado es GreengrassV2TokenExchangeRole. -
En la pestaña Permisos, elija Agregar permisos y, a continuación, Asociar políticas.
-
En la sección Otras políticas de permisos, seleccione la casilla de verificación junto a la política
MyGreengrassV2ComponentArtifactPolicyque creó, a continuación, elija Agregar permisos.
-
-
Utilice la receta del componente para crear un componente en la consola de AWS IoT Greengrass
. -
En el panel de navegación de la consola de AWS IoT Greengrass
, elija Componentes, seguido de Crear componente. -
En Información del componente, seleccione Introducir receta como JSON. La receta del marcador de posición debería verse similar al siguiente ejemplo.
{ "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}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] } -
Sustituya el URI del marcador de posición de cada sección
Artifactspor el URI de S3 de su objetohello_world.py. -
Seleccione Crear componente.
-
En la página del componente com.example.HelloWorld, compruebe que el estado del componente es Implementable.
-
Cómo cargar su componente Hello World
-
Utilice un bucket de S3 en su Cuenta de AWS para alojar los artefactos de los componentes de AWS IoT Greengrass. Al implementar el componente en un dispositivo principal, el dispositivo descarga los artefactos del componente del bucket.
Puede crear un bucket de S3 existente o ejecutar el siguiente comando para crear un bucket. Este comando crea un bucket con su identificador de la Cuenta de AWS y la Región de AWS para formar un nombre de bucket único. Sustituya
123456789012por el identificador de Cuenta de AWS yregioncon la Región de AWS que utilizó en este tutorial.aws s3 mb s3://greengrass-component-artifacts-123456789012-regionEl comando genera la siguiente información si la solicitud tiene éxito.
make_bucket: greengrass-component-artifacts-123456789012-region -
Permita que el dispositivo principal acceda a los artefactos de los componentes del bucket de S3.
Cada dispositivo principal tiene un rol de IAM del dispositivo principal que le permite interactuar con AWS IoT y enviar registros a la Nube de AWS. Este rol de dispositivo no permite el acceso a los bucket de S3 de forma predeterminada, por lo que debe crear y adjuntar una política que permita que el dispositivo principal recupere artefactos de componentes del bucket de S3.
Puede omitir este paso si el rol del dispositivo principal ya permite acceder al bucket de S3. De lo contrario, cree una política de IAM que permita el acceso y adjúntela al rol, de la siguiente manera:
-
Cree un archivo llamado
component-artifact-policy.jsony copie el siguiente JSON en el archivo. Esta política permite el acceso a todos los archivos en un bucket de S3. Sustituya amzn-s3-demo-bucket por el nombre de su bucket de S3.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] } -
Ejecute el siguiente comando para crear la política del documento de política en
component-artifact-policy.json.Copie la política del nombre de recurso de Amazon (ARN) de la política de los metadatos de salida. Utilice este ARN para asociar la política al rol del dispositivo principal en el siguiente paso.
-
Ejecute el siguiente comando para asociar la política al rol del dispositivo principal. Sustituya
GreengrassV2TokenExchangeRolepor el nombre del rol del dispositivo principal. Especificó este nombre de rol al instalar el software AWS IoT Greengrass Core. Sustituya el ARN de la política por el ARN del paso anterior.Si todo es correcto, el comando no tiene salida. El dispositivo principal ahora puede acceder a los artefactos que carga en este bucket de S3.
-
-
Cargue el artefacto de script de Python de Hello World en el bucket de S3.
Ejecute el siguiente comando para cargar el script en la misma ruta del bucket en el que se encuentra el script en su AWS IoT Greengrass Core. Sustituya amzn-s3-demo-bucket por el nombre de su bucket de S3.
El comando genera una línea que comienza con
upload:si la solicitud se realiza correctamente. -
Agregue el URI de Amazon S3 de cada artefacto a la receta del componente.
El URI de Amazon S3 está compuesto por el nombre del bucket y la ruta al objeto artefacto del bucket. El URI de Amazon S3 de su artefacto de script es el URI en el que cargó el artefacto en el paso anterior. Este URI debería parecerse al siguiente ejemplo. Sustituya amzn-s3-demo-bucket por el nombre de su bucket de S3.
s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.pyPara agregar el artefacto a la receta, agregue una lista de
Artifactsque contenga una estructura con la URI de Amazon S3. -
Cree un recurso de componente en AWS IoT Greengrass a partir de la receta. Ejecute el siguiente comando para crear el componente a partir de la receta, que proporciona como un archivo binario.
Si la solicitud se realiza con éxito, la respuesta de es similar a la del siguiente ejemplo.
{ "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }Copie el
arnde la respuesta para comprobar el estado del componente en el paso siguiente.nota
También puede ver su componente Hello World en la consola de AWS IoT Greengrass
, en la página Componentes. -
Compruebe que el componente se ha creado y está listo para ser implementado. Al crear un componente, su estado es
REQUESTED. A continuación, AWS IoT Greengrass valida que el componente sea implementable. Puede ejecutar el siguiente comando para consultar el estado del componente y comprobar que el componente se puede implementar. Sustituyaarnpor el ARN del paso anterior.aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"Si el componente se valida, la respuesta indica que el estado del componente es
DEPLOYABLE.{ "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }
Su componente Hello World ya está disponible en AWS IoT Greengrass. Puede volver a implementarlo en este dispositivo principal de Greengrass o en otros dispositivos principales.