Cómo crear un recurso de secreto (consola) - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

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.

Cómo crear un recurso de secreto (consola)

Esta característica está disponible para AWS IoT Greengrass Core versión 1.7 y posteriores.

Este tutorial muestra cómo utilizar la AWS Management Console para añadir un recurso de secreto a un grupo de Greengrass. Un recurso de secreto es una referencia a un secreto de AWS Secrets Manager. Para obtener más información, consulte Implementación de secretos en el núcleo de AWS IoT Greengrass.

En el dispositivo AWS IoT Greengrass principal, los conectores y las funciones de Lambda pueden usar el recurso de secretos para autenticarse con servicios y aplicaciones, sin necesidad de codificación rígida de contraseñas, tokens u otras credenciales.

En este tutorial, comience con la creación de un secreto en la consola de AWS Secrets Manager. A continuación, en la consola de AWS IoT Greengrass, añada un recurso secreto a un grupo de Greengrass de la página Recursos. Este recursos secreto hace referencia al secreto del Secrets Manager. Posteriormente, asocie un recurso secreto a una función de Lambda, que permite a la función obtener el valor del secreto local.

nota

Como alternativa, la consola le permite crear un secreto y un recurso secreto al configurar un conector o una función de Lambda. Puede hacerlo desde la página Configurar parámetros del conector o desde la página Recursos de la función de Lambda.

Solo los conectores que contienen los parámetros de secretos pueden acceder a los secretos. Para obtener un tutorial que muestra la forma en que el conector de notificaciones Twilio utiliza un token de autenticación almacenado localmente, consulte Introducción a los conectores de Greengrass (consola).

El tutorial contiene los siguientes pasos generales:

Completar el tutorial debería tomarle aproximadamente 20 minutos.

Requisitos previos

Para completar este tutorial, se necesita lo siguiente:

  • Un grupo de Greengrass y un núcleo de Greengrass (versión 1.7 o posterior). Para obtener información acerca de cómo crear un núcleo y un grupo de Greengrass, consulte Empezar con AWS IoT Greengrass. El tutorial de introducción también incluye pasos para instalar el software AWS IoT Greengrass Core.

  • AWS IoT Greengrass debe estar configurado para admitir secretos locales. Para obtener más información, consulte Requisitos de secretos.

    nota

    Este requisito incluye permitir el acceso a sus secretos de Secret Manager. Si utiliza el rol de servicio predeterminado de Greengrass, Greengrass tiene permiso para obtener los valores de los secretos cuyos nombres empiecen por greengrass-.

  • Para obtener los valores de los secretos locales, las funciones de Lambda definidas por el usuario deben usar el SDK de AWS IoT Greengrass Core versión 1.3.0 o posterior.

Paso 1: Crear un secreto de Secrets Manager

En este paso, utilice la consola de AWS Secrets Manager para crear un secreto.

  1. Inicie sesión en la consola de AWS Secrets Manager.

    nota

    Para obtener más información sobre este proceso, consulte Paso 1: Crear y almacenar el secreto en AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.

  2. Elija Store a new secret (Almacenar un nuevo secreto).

  3. En Seleccionar tipo de secreto, elija Otro tipo de secretos.

  4. En Specify the key-value pairs to be stored for this secret (Especificar los pares clave-valor que se almacenarán para este secreto):

    • En Key (Clave), escriba test.

    • En Value, ingrese abcdefghi.

  5. Mantenga aws/secretsmanager seleccionado para la clave de cifrado y, a continuación, seleccione Siguiente.

    nota

    AWS KMS no le cobrará si utiliza la clave administrada de AWS predeterminada que Secrets Manager crea en su cuenta.

  6. En Secret name (Nombre del secreto), escriba greengrass-TestSecret y, a continuación, seleccione Next (Siguiente).

    nota

    De forma predeterminada, el rol de servicio Greengrass permite a AWS IoT Greengrass obtener el valor de los secretos con nombres que comienzan por greengrass-. Para obtener más información, consulte requisitos de secretos.

  7. Este tutorial no requiere rotación, así que elija desactivar la rotación automática y, a continuación, seleccione Siguiente.

  8. En la página Review (Revisar), revise los ajustes y, a continuación, seleccione Store (Almacenar).

    A continuación, se crea un recurso de secreto en su grupo de Greengrass que hace referencia al secreto.

Paso 2: Agregar un recurso de secreto a un grupo de Greengrass

En este paso, debe configurar un recurso de grupo que hace referencia al secreto de Secrets Manager.

  1. En el panel de navegación de la consola AWS IoT, en Administrar, expanda los dispositivos Greengrass y, a continuación, elija Grupos (V1).

  2. Elija el grupo al que desee añadir el recurso de secreto.

  3. En la página de configuración del grupo, elija la pestaña Recursos y, a continuación, desplácese hacia abajo hasta la sección Secretos. La sección Secretos muestra los recursos secretos que pertenecen al grupo. Puede añadir, editar y quitar los recursos de secreto de esta sección.

    nota

    Como alternativa, la consola le permite crear un secreto y un recurso secreto al configurar un conector o una función de Lambda. Puede hacerlo desde la página Configurar parámetros del conector o desde la página Recursos de la función de Lambda.

  4. Seleccione Añadir en la sección Secretos.

  5. En la página Añadir un recurso secreto, introduzca MyTestSecret el Nombre del recurso.

  6. En Secreto, seleccione Greengrass-TestSecret.

  7. En la sección Seleccionar etiquetas (opcional), la etiqueta provisional AWSCURRENT representa la versión más reciente del secreto. Esta etiqueta siempre está incluida en un recurso de secreto.

    nota

    Este tutorial solo requiere la etiqueta AWSCURRENT. De forma opcional, puede incluir etiquetas que requieran su función de Lambda o un conector.

  8. Seleccione Add resource (Añadir recurso).

Paso 3: Crear un paquete de implementación de la función de Lambda

Para crear una función de Lambda, primero debe crear un paquete de implementación de funciones de Lambda que contenga el código de la función y las dependencias. Las funciones de Lambda de Greengrass requieren el SDK de AWS IoT Greengrass Core para tareas como la comunicación con los mensajes de MQTT en el entorno principal y el acceso a los secretos locales. En este tutorial se crea una característica de Python para que utilices la versión Python del SDK en el paquete de implementación.

nota

Para obtener los valores de los secretos locales, las funciones de Lambda definidas por el usuario deben usar el SDK de AWS IoT Greengrass Core versión 1.3.0 o posterior.

  1. Desde la página de descargas del Core SDK AWS IoT Greengrass, descargue el SDK AWS IoT Greengrass básico para Python en su ordenador.

  2. Descomprima el paquete descargado para obtener el SDK. El SDK es la carpeta greengrasssdk.

  3. Guarde la siguiente función de código de Python en un archivo local llamado "secret_test.py".

    import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") iot_client = greengrasssdk.client("iot-data") secret_name = "greengrass-TestSecret" send_topic = "secrets/output" def function_handler(event, context): """ Gets a secret and publishes a message to indicate whether the secret was successfully retrieved. """ response = secrets_client.get_secret_value(SecretId=secret_name) secret_value = response.get("SecretString") message = ( f"Failed to retrieve secret {secret_name}." if secret_value is None else f"Successfully retrieved secret {secret_name}." ) iot_client.publish(topic=send_topic, payload=message) print("Published: " + message)

    La función get_secret_value admite el nombre o ARN del secreto del Secrets Manager para el valor SecretId. En este ejemplo se utiliza el nombre del secreto. En este secreto de ejemplo, AWS IoT Greengrass devuelve el par clave-valor: {"test":"abcdefghi"}.

    importante

    Asegúrese de que las funciones de Lambda definidas por el usuario gestionen los secretos de forma segura y no registren ningún dato confidencial almacenado en el secreto. Para obtener más información, consulte Mitigar los riesgos de registrar y depurar la función de Lambda en la Guía del usuario de AWS Secrets Manager. Si bien esta documentación se refiere específicamente a las funciones de rotación, la recomendación también se aplica a las funciones de Lambda de Greengrass.

  4. Comprima en un archivo ZIP los siguientes elementos en un archivo denominado "secret_test_python.zip". Al crear el archivo ZIP, incluya únicamente el código y sus dependencias, no la carpeta donde se encuentran.

    • secret_test.py. Lógica de la aplicación.

    • greengrasssdk. Biblioteca necesaria para todas las funciones de Lambda de Greengrass dd Python.

    Este es el paquete de implementación de la función de Lambda.

Paso 4: Crear una función de Lambda

En este paso, va a utilizar la consola de AWS Lambda para crear una función de Lambda y va a configurarla para utilizar su paquete de implementación. A continuación, publicará una versión de la función y creará un alias.

  1. Primero, cree la función de Lambda.

    1. En la AWS Management Console, elija Services (Servicios) y abra la consola de AWS Lambda.

    2. Elija Crear función, y, a continuación, Autor desde cero.

    3. En la sección Basic information (Información básica), utilice los siguientes valores:

      • En Function name (Nombre de la función), introduzca SecretTest.

      • En Runtime (Tiempo de ejecución), elija Python 3.7.

      • En Permisos, mantenga la configuración predeterminada. Esto crea un rol de ejecución que otorga permisos Lambda básicos. AWS IoT Greengrass no utiliza este rol.

    4. En la parte inferior de la página, elija Create function.

  2. A continuación, registre el controlador y cargue el paquete de implementación de la función de Lambda.

    1. En la pestaña Código, en Código fuente, seleccione Cargar desde. En el menú desplegable, seleccione un archivo .zip.

      La carga del menú desplegable con el archivo .zip resaltado.
    2. Seleccione Cargar y, a continuación, elija su paquete de implementación secret_test_python.zip. A continuación, elija Save (Guardar).

    3. En la pestaña Código de la función, en Configuración de tiempo de ejecución, elija Editar y, a continuación, introduzca los siguientes valores.

      • En Runtime (Tiempo de ejecución), elija Python 3.7.

      • En Handler (Controlador), escriba secret_test.function_handler.

    4. Seleccione Save.

      nota

      El botón de prueba de la consola de AWS Lambda no funciona con esta función. El SDK AWS IoT Greengrass Core no contiene los módulos necesarios para ejecutar las funciones de Lambda de Greengrass de forma independiente en la consola AWS Lambda. Estos módulos (por ejemplo, greengrass_common) se suministran a las funciones una vez desplegados en el núcleo de Greengrass.

  3. Ahora, publique la primera versión de su función de Lambda y cree un alias para la versión.

    nota

    Los grupos de Greengrass pueden hacer referencia a una función de Lambda por versión o alias (recomendado). El uso de un alias facilita la gestión de las actualizaciones del código porque no tiene que cambiar la tabla de suscripción o la definición del grupo cuando se actualiza el código de la función. En su lugar, basta con apuntar el alias a la nueva versión de la función.

    1. En el menú Actions, elija Publish new version.

    2. En Version description (Descripción de versión), escriba First version y, a continuación, elija Publish (Publicar).

    3. En la página de configuración de SecretTest: 1, en el menú Actions (Acciones), elija Create alias (Crear alias).

    4. En la página Create a new alias, utilice los valores siguientes:

      • En Name (Nombre), ingrese GG_SecretTest.

      • En Version (Versión), elija 1.

      nota

      AWS IoT Greengrass no admite alias de Lambda; para versiones de $LATEST.

    5. Seleccione Create (Crear).

Ahora está preparado para añadir la función de Lambda al grupo de Greengrass y asociar el recurso secreto.

Paso 5: Añadir la función de Lambda al grupo de Greengrass

En este paso, va a añadir la función de Lambda al grupo de Greengrass en la consola de AWS IoT.

  1. En la página de configuración del grupo, elija la pestaña Funciones de lambda.

  2. En la sección Mis funciones de Lambda, seleccione Añadir.

  3. Para la función de Lambda, elija SecretTest.

  4. Para la versión de la función de Lambda, elija el alias de la versión que publicó.

A continuación, configure el ciclo de vida de la función de Lambda.

  1. En la sección de configuración de la función de Lambda, realice las siguientes actualizaciones.

    nota

    Le recomendamos que ejecute la función de Lambda sin creación de contenedores, a menos que su modelo de negocio lo requiera. Esto permite el acceso a la GPU y la cámara del dispositivo sin necesidad de configurar los recursos del dispositivo. Si ejecuta sin creación de contenedores, también debe conceder acceso raíz a las funciones de Lambda AWS IoT Greengrass.

    1. Para ejecutar sin creación de contenedores:

    2. Para ejecutarlo en modo contenerizado, en su lugar:

      nota

      No recomendamos ejecutarlo en modo contenerizado a menos que su modelo de negocio lo requiera.

      • En Usuario y grupo del sistema, seleccione Usar grupo predeterminado.

      • Para la creación de contenedores de funciones de Lambda, elija Usar grupo por defecto.

      • En Límite de memoria, escriba 1024 MB.

      • En Tiempo de espera, escriba 10 seconds.

      • En Ancladas, elija Verdadero

        Para obtener más información, consulte Configuración del ciclo de vida de las funciones de Lambda de Greengrass.

      • En Parámetros adicionales, para Acceso de lectura al directorio /sys, elija Activado.

  2. Elija Añadir función de Lambda.

A continuación, el recurso de secretos se aocias con la función.

Paso 6: Asociar el recurso de secreto a la función de Lambda

En este paso, asocie el recurso secreto a la función de Lambda en su grupo de Greengrass. Esto asocia el recurso con la función, que permite a la función obtener el valor del secreto local.

  1. En la página de configuración del grupo, elija la pestaña Funciones de lambda.

  2. Seleccione la función SecretTest.

  3. En la página de detalles de la función, seleccione Recursos.

  4. Vaya a la sección Secretos y seleccione Asociar.

  5. Elija MyTestSecret y, a continuación, seleccione Asociar.

Paso 7: Agregar suscripciones al grupo de Greengrass

En este paso, añada las suscripciones que permitan a AWS IoT y la función de Lambda intercambiar mensajes. Una suscripción permite a AWS IoT invocar la función y un permite a la función para enviar datos de salida a AWS IoT.

  1. En la página de configuración del grupo, elija la pestaña Suscripciones y, a continuación, elija Añadir suscripción.

  2. Cree crear una suscripción que permita a AWS IoT publicar mensajes en la función.

    En la página de configuración del grupo, elija la pestaña Suscripciones y, a continuación, elija Añadir suscripción.

  3. En la página Crear una suscripción, configure el origen y el destino de la siguiente manera:

    1. En Tipo de origen, elija función de Lambda y, a continuación, elija Nube IoT.

    2. En Tipo de destino, elija Servicio y, a continuación, SecretTest.

    3. En Filtro por temas, introduzca secrets/input y, a continuación, seleccione Crear suscripción.

  4. Añadir una segunda suscripción. Seleccione la pestaña Suscripciones, elija Agregar suscripción y configure el origen y el destino de la siguiente manera:

    1. En Tipo de fuente, elija Servicios y, a continuación, SecretTest.

    2. En Tipo de destino, elija función de Lambda y, a continuación, elija Nube IoT.

    3. En Filtro por temas, introduzca secrets/output y, a continuación, seleccione Crear suscripción.

Paso 8: Implementar el grupo de Greengrass

Implemente el grupo en el dispositivo del núcleo. Durante la implementación, AWS IoT Greengrass recupera el valor del secreto de Secrets Manager y crea una copia cifrada y local en el núcleo.

  1. Asegúrese de que el núcleo de AWS IoT Greengrass se está ejecutando. Ejecute los siguientes comandos en el terminal de Raspberry Pi según sea necesario.

    1. Para comprobar si el demonio está en ejecución:

      ps aux | grep -E 'greengrass.*daemon'

      Si la salida contiene una entrada root para /greengrass/ggc/packages/ggc-version/bin/daemon, el demonio está en ejecución.

      nota

      La versión que figura en la ruta depende de la versión del software AWS IoT Greengrass Core que esté instalada en el dispositivo del núcleo.

    2. Iniciar el daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. En la página de configuración de grupo, elija Implementar.

    1. En la pestaña Funciones de Lambda, en la sección Funciones de Lambda del sistema, seleccione Detector de IP y elija Editar.

    2. En el cuadro de diálogo Editar configuración del detector IP, seleccione Detectar y anular automáticamente los puntos de conexión del agente MQTT.

    3. Seleccione Save.

      Esto permite a los dispositivos adquirir automáticamente la información de conexión del dispositivo principal, como la dirección IP, el DNS y el número de puerto. Se recomienda la detección automática, pero AWS IoT Greengrass también es compatible con puntos de enlace especificados manualmente. Solo se le solicitará el método de detección la primera vez que se implemente el grupo.

      nota

      Si se le solicita, conceda permiso para crear el rol de servicio de Greengrass y asócielo a su Cuenta de AWS en el Región de AWS actual. Este rol permite a AWS IoT Greengrass acceder a los servicios de AWS.

      En la página Deployments (Implementaciones), se muestra la marca temporal, el ID de versión y el estado de la implementación. Una vez terminada, la implementación debería mostrar el estado Completado.

      Para obtener ayuda sobre la resolución de problemas, consulte Solución de problemas de AWS IoT Greengrass.

Probar la función de Lambda

  1. En la página de inicio de la consola AWS IoT, elija Pruebas.

  2. Para Suscribirse al tema, utilice los siguientes valores y, a continuación, seleccione Suscribirse.

    Propiedad

    Valor

    Subscription topic

    secrets/output

    Visualización de la carga de MQTT

    Display payloads as strings

  3. Para Publicar en tema, utilice los siguientes valores y, a continuación, seleccione Publicar para invocar la función.

    Propiedad

    Valor

    Tema

    secrets/input

    Mensaje

    Conserve el mensaje predeterminado. La publicación de un mensaje invoca la función de Lambda, pero la función de este tutorial no procesa el cuerpo del mensaje.

    Si se ejecuta correctamente, la función publica un mensaje de "Success (Correcto)".

Véase también