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.
Registro y autenticación de la 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.
-
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 función de IAM para sus dispositivos.
En primer lugar, cree AWS IoT objetos tipo objeto con el AWS IoT cliente (
iot_client
) que creó 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 )
-
Crear su flota de dispositivos.
Cree una flota de dispositivos con el objeto cliente de SageMaker IA definido en un paso anterior. También puedes usar la consola de SageMaker IA 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]
Especifique el ARN de su rol de IoT. 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. -
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 } ] )
-
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')
-
Asocie el alias del rol a AWS IoT.
Cuando creas una flota de dispositivos con SageMaker AI (
sagemaker_client.create_device_fleet()
), se genera un alias de rol para ti. 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 rol de IAM asociado a un alias de rol. AWS IoT El alias de rol le permite cambiar el rol del dispositivo sin tener que actualizarlo. UtiliceDescribeDeviceFleet
para obtener el nombre del alias y el ARN del rol.# 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 IoTrole_alias = iot_client.describe_role_alias( roleAlias=role_alias_name)
Para obtener más información sobre el alias de rol de IAM, consulte Alias de rol permite el acceso a 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'])
-
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)
-
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 de conexión para realizar una solicitud HTTPS al proveedor de credenciales para devolver un token de seguridad. El ejemplo de comando siguiente utiliza
curl
, pero puede utilizar cualquier cliente HTTP.!curl --cert device.pem.crt --key private.pem.key --cacert AmazonRootCA1.pem $endpoint
Si el certificado está verificado, suba las claves y el certificado al URI de su bucket de Amazon S3:
!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/