Registre y autentique su flota de dispositivos - Amazon SageMaker

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.

Registre y autentique su flota de dispositivos

En esta sección, crearás tu AWS IoT objeto, crearás una flota de dispositivos, registrarás tu flota de dispositivos para que pueda interactuar con la nube, crearás certificados X.509 para autenticar tus dispositivos AWS IoT Core, asociarás el alias de rol al AWS IoT que se generó cuando creaste tu flota, obtendrás el punto de enlace AWS específico de tu cuenta para el proveedor de credenciales, obtendrás un archivo de CA raíz oficial de Amazon y subirás el archivo de Amazon CA a Amazon S3.

  1. Crea cosas. AWS IoT

    SageMaker Edge Manager aprovecha los AWS IoT Core servicios para facilitar la conexión entre los dispositivos periféricos y los puntos finales de la AWS nube. Puede aprovechar las AWS IoT funciones existentes después de configurar sus dispositivos para que funcionen con Edge Manager.

    Para conectar su dispositivo AWS IoT, debe crear objetos, AWS IoT crear y registrar un certificado de cliente con AWS IoT y crear y configurar la IAM función para sus dispositivos.

    En primer lugar, crea AWS IoT objetos tipo objeto con el AWS IoT cliente (iot_client) que creaste anteriormente con Boto3. En el ejemplo siguiente se muestra cómo crear dos objetos de cosa:

    iot_thing_name = 'sample-device' iot_thing_type = 'getting-started-demo' iot_client.create_thing_type( thingTypeName=iot_thing_type ) # Create an AWS IoT thing objects iot_client.create_thing( thingName=iot_thing_name, thingTypeName=iot_thing_type )
  2. Crear su flota de dispositivos.

    Cree una flota de dispositivos con el objeto SageMaker cliente definido en un paso anterior. También puede usar la SageMaker consola para crear una flota de dispositivos.

    import time device_fleet_name="demo-device-fleet" + str(time.time()).split('.')[0] device_name="sagemaker-edge-demo-device" + str(time.time()).split('.')[0]

    Especifica tu función de IoTARN. Esto permite AWS IoT conceder credenciales temporales a los dispositivos.

    device_model_directory='device_output' s3_device_fleet_output = 's3://{}/{}'.format(bucket, device_model_directory) sagemaker_client.create_device_fleet( DeviceFleetName=device_fleet_name, RoleArn=iot_role_arn, # IoT Role ARN specified in previous step OutputConfig={ 'S3OutputLocation': s3_device_fleet_output } )

    Al crear una flota de dispositivos, se crea un alias de AWS IoT rol. Este alias de rol se asocia al AWS IoT uso del iot_client objeto en un paso posterior.

  3. Registrar su flota de dispositivos.

    Para interactuar con la nube, debe registrar su dispositivo en SageMaker Edge Manager. En este ejemplo, registra un único dispositivo con la flota que ha creado. Para registrar el dispositivo, debe proporcionar un nombre de dispositivo y el nombre de la cosa AWS IoT , tal y como se muestra en el siguiente ejemplo:

    # Device name should be 36 characters device_name = "sagemaker-edge-demo-device" + str(time.time()).split('.')[0] sagemaker_client.register_devices( DeviceFleetName=device_fleet_name, Devices=[ { "DeviceName": device_name, "IotThingName": iot_thing_name } ] )
  4. Crear certificados X.509.

    Tras crear el objeto AWS IoT objeto, debe crear un certificado de dispositivo X.509 para el objeto objeto objeto. Este certificado autentica su dispositivo en AWS IoT Core.

    Utilice lo siguiente para crear una clave privada, una clave pública y un archivo de certificado X.509 utilizando el comando AWS IoT client defined (iot_client) anteriormente.

    # Creates a 2048-bit RSA key pair and issues an X.509 # certificate # using the issued public key. create_cert = iot_client.create_keys_and_certificate( setAsActive=True ) # Get certificate from dictionary object and save in its own with open('./device.pem.crt', 'w') as f: for line in create_cert['certificatePem'].split('\n'): f.write(line) f.write('\n') # Get private key from dictionary object and save in its own with open('./private.pem.key', 'w') as f: for line in create_cert['keyPair']['PrivateKey'].split('\n'): f.write(line) f.write('\n') # Get a private key from dictionary object and save in its own with open('./public.pem.key', 'w') as f: for line in create_cert['keyPair']['PublicKey'].split('\n'): f.write(line) f.write('\n')
  5. Asocie el alias del rol a AWS IoT.

    Al crear una flota de dispositivos con SageMaker (sagemaker_client.create_device_fleet()), se genera un alias de rol para usted. Un alias de AWS IoT rol proporciona un mecanismo para que los dispositivos conectados se autentiquen AWS IoT mediante certificados X.509 y, a continuación, obtengan AWS credenciales efímeras de un IAM rol asociado a un AWS IoT alias de rol. El alias de rol le permite cambiar el rol del dispositivo sin tener que actualizarlo. Se utiliza DescribeDeviceFleet para obtener el nombre del alias del rol y. ARN

    # Print Amazon Resource Name (ARN) and alias that has access # to AWS Internet of Things (IoT). sagemaker_client.describe_device_fleet(DeviceFleetName=device_fleet_name) # Store iot role alias string in a variable # Grabs role ARN full_role_alias_name = sagemaker_client.describe_device_fleet(DeviceFleetName=device_fleet_name)['IotRoleAlias'] start_index = full_role_alias_name.find('SageMaker') # Find beginning of role name role_alias_name = full_role_alias_name[start_index:]

    Úselo iot_client para facilitar la asociación del alias de rol generado al crear la flota de dispositivos con AWS IoT:

    role_alias = iot_client.describe_role_alias( roleAlias=role_alias_name)

    Para obtener más información sobre el alias del IAM rol, consulte El alias del rol permite el acceso a los servicios no utilizados.

    Creó y registró un certificado AWS IoT anteriormente para autenticar correctamente su dispositivo. Ahora, debe crear y asociar una política al certificado para autorizar la solicitud del token de seguridad.

    alias_policy = { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": role_alias['roleAliasDescription']['roleAliasArn'] } } policy_name = 'aliaspolicy-'+ str(time.time()).split('.')[0] aliaspolicy = iot_client.create_policy(policyName=policy_name, policyDocument=json.dumps(alias_policy)) # Attach policy iot_client.attach_policy(policyName=policy_name, target=create_cert['certificateArn'])
  6. Obtenga el punto de conexión AWS específico de su cuenta para el proveedor de credenciales.

    Los dispositivos periféricos necesitan un punto de conexión para poder asumir las credenciales. Obtenga el punto de conexión específico de su cuenta AWS para el proveedor de credenciales.

    # Get the unique endpoint specific to your AWS account that is making the call. iot_endpoint = iot_client.describe_endpoint( endpointType='iot:CredentialProvider' ) endpoint="https://{}/role-aliases/{}/credentials".format(iot_endpoint['endpointAddress'],role_alias_name)
  7. Obtenga el archivo Amazon root CA oficial y cárguelo en el bucket de Amazon S3.

    Usa lo siguiente en tu Jupyter Notebook o AWS CLI (si usas tu terminal), quita el símbolo «!» función mágica):

    !wget https://www.amazontrust.com/repository/AmazonRootCA1.pem

    Utilice el punto final para HTTPS solicitar al proveedor de credenciales que devuelva un token de seguridad. El siguiente comando de ejemplo usacurl, pero usted puede usar, cualquier HTTP cliente.

    !curl --cert device.pem.crt --key private.pem.key --cacert AmazonRootCA1.pem $endpoint

    Si el certificado está verificado, sube las claves y el certificado a tu bucket de Amazon S3URI:

    !aws s3 cp private.pem.key s3://{bucket}/authorization-files/ !aws s3 cp device.pem.crt s3://{bucket}/authorization-files/ !aws s3 cp AmazonRootCA1.pem s3://{bucket}/authorization-files/

    Limpie su directorio de trabajo moviendo las claves y el certificado a un directorio distinto:

    # Optional - Clean up working directory !mkdir authorization-files !mv private.pem.key device.pem.crt AmazonRootCA1.pem authorization-files/