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.
Interacción con servicios de AWS
Los dispositivos principales de Greengrass usan certificados X.509 para conectarse a AWS IoT Core mediante protocolos de autenticación mutua de TLS. Estos certificados permiten a los dispositivos interactuar con AWS IoT sin credenciales de AWS, que normalmente constan de un ID de clave de acceso y de una clave de acceso secreta. Otros servicios de AWS requieren credenciales de AWS en lugar de certificados X.509 para llamar a operaciones de la API en los puntos de conexión del servicio. AWS IoT Core tiene un proveedor de credenciales que permite a los dispositivos utilizar su certificado X.509 para autenticar las solicitudes de AWS. El proveedor de credenciales de AWS IoT autentica los dispositivos mediante un certificado X.509 y emite credenciales de AWS en forma de un token de seguridad temporal con privilegios limitados. Los dispositivos pueden utilizar este token para firmar y autenticar cualquier solicitud de AWS. Esto elimina la necesidad de almacenar credenciales de AWS en los dispositivos principales de Greengrass. Para obtener más información, consulte Autorización de llamadas a los servicios de AWS en la Guía para desarrolladores de AWS IoT Core.
Para obtener las credenciales de AWS IoT, los dispositivos principales de Greengrass utilizan un alias de rol AWS IoT que apunta a un rol de IAM. Este rol de IAM se denomina rol de intercambio de token. El alias del rol y el rol de intercambio de token se crean al instalar el software AWS IoT Greengrass Core. Para especificar el alias de rol que utiliza un dispositivo principal, configure el parámetro iotRoleAlias del Núcleo de Greengrass.
El proveedor de credenciales de AWS IoT asume el rol de intercambio de token en su nombre para proporcionar credenciales de AWS a los dispositivos principales. Puede adjuntar las políticas de IAM adecuadas a este rol para permitir que sus dispositivos principales accedan a sus recursos de AWS, como los artefactos de componentes en buckets de S3. Para obtener más información acerca de cómo configurar el rol de intercambio de token, consulte Autorización de los dispositivos principales para interactuar con los servicios de AWS.
Los dispositivos principales de Greengrass almacenan credenciales de AWS en la memoria y, de forma predeterminada, las credenciales caducan después de una hora. Si el software AWS IoT Greengrass Core se reinicia, debe volver a obtener las credenciales. Puede utilizar la operación UpdateRoleAlias para configurar el periodo de validez de las credenciales.
AWS IoT Greengrass proporciona un componente público, el componente del servicio de intercambio de token, que puede definir como una dependencia en su componente personalizado para interactuar con los servicios de AWS. El servicio de intercambio de token proporciona al componente una variable de entorno, AWS_CONTAINER_CREDENTIALS_FULL_URI, que define el URI de un servidor local que proporciona las credenciales de AWS. Al crear un cliente del SDK de AWS, el cliente comprueba esta variable de entorno y se conecta al servidor local para recuperar las credenciales de AWS y las utiliza para firmar las solicitudes de la API. Esto le permite usar los SDK de AWS y otras herramientas para llamar a los servicios de AWS en sus componentes. Para obtener más información, consulte Servicio de intercambio de token.
importante
La compatibilidad para adquirir credenciales de AWS de esta manera se agregó a los SDK de AWS el 13 de julio de 2016. Su componente debe utilizar una versión del SDK de AWS creada en esa fecha o después. Para obtener más información, consulte Uso de un SDK de AWS compatible en la Guía para desarrolladores de Amazon Elastic Container Service.
Para adquirir credenciales de AWS en su componente personalizado, defina aws.greengrass.TokenExchangeService como una dependencia en la receta del componente. El siguiente ejemplo de receta define un componente que instala boto3
nota
Para ejecutar este ejemplo de componente, el dispositivo debe tener el permiso s3:ListAllMyBuckets. Para obtener más información, consulte Autorización de los dispositivos principales para interactuar con los servicios de AWS.
Este ejemplo de componente ejecuta el siguiente script de Python, list_s3_buckets.py, que muestra una lista de los buckets de Amazon S3.
import boto3 import os try: print("Creating boto3 S3 client...") s3 = boto3.client('s3') print("Successfully created boto3 S3 client") except Exception as e: print("Failed to create boto3 s3 client. Error: " + str(e)) exit(1) try: print("Listing S3 buckets...") response = s3.list_buckets() for bucket in response['Buckets']: print(f'\t{bucket["Name"]}') print("Successfully listed S3 buckets") except Exception as e: print("Failed to list S3 buckets. Error: " + str(e)) exit(1)