Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Registrieren und authentifizieren Sie Ihre Geräteflotte
In diesem Abschnitt erstellen Sie Ihr AWS IoT Ding-Objekt, erstellen eine Geräteflotte, registrieren Ihre Geräteflotte, damit sie mit der Cloud interagieren kann, erstellen X.509-Zertifikate zur Authentifizierung Ihrer Geräte AWS IoT Core, verknüpfen den Rollenalias mit AWS IoT dem, der bei der Erstellung Ihrer Flotte generiert wurde, ermitteln Ihren AWS kontospezifischen Endpunkt für den Anbieter von Anmeldeinformationen, rufen eine offizielle Amazon Root-CA-Datei ab und laden die Amazon CA-Datei auf Amazon S3 hoch.
-
Erstelle Dinge. AWS IoT
SageMaker Edge Manager nutzt die AWS IoT Core Dienste, um die Verbindung zwischen den Edge-Geräten und Endpunkten in der AWS Cloud zu erleichtern. Sie können die vorhandenen AWS IoT Funktionen nutzen, nachdem Sie Ihre Geräte für die Verwendung mit Edge Manager eingerichtet haben.
Um Ihr Gerät mit zu verbinden AWS IoT, müssen Sie AWS IoT Ding-Objekte erstellen, ein Client-Zertifikat bei AWS IoT erstellen und registrieren und die IAM-Rolle für Ihre Geräte erstellen und konfigurieren.
Erstellen Sie AWS IoT zunächst Dingobjekte mit dem AWS IoT Client (
iot_client
), den Sie zuvor mit Boto3 erstellt haben. Das folgende Beispiel zeigt, wie man zwei Objekte erstellt: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 )
-
Geräteflotte erstellen.
Erstellen Sie eine Geräteflotte mit dem SageMaker KI-Client-Objekt, das in einem vorherigen Schritt definiert wurde. Sie können die SageMaker KI-Konsole auch verwenden, um eine Geräteflotte zu erstellen.
import time device_fleet_name="demo-device-fleet" + str(time.time()).split('.')[0] device_name="sagemaker-edge-demo-device" + str(time.time()).split('.')[0]
Geben Sie den ARN Ihrer IoT-Rolle an. Auf diese Weise können Geräten temporäre Anmeldeinformationen AWS IoT gewährt werden.
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 } )
Ein AWS IoT Rollenalias wird erstellt, wenn Sie eine Geräteflotte erstellen. Dieser Rollenalias wird mit der AWS IoT Verwendung des
iot_client
Objekts in einem späteren Schritt verknüpft. -
Registrieren Sie Ihre Geräteflotte.
Um mit der Cloud zu interagieren, müssen Sie Ihr Gerät bei SageMaker Edge Manager registrieren. In diesem Beispiel registrieren Sie ein einzelnes Gerät bei der Flotte, die Sie erstellt haben. Um das Gerät zu registrieren, müssen Sie einen Gerätenamen und den Namen des AWS IoT Objekts angeben, wie im folgenden Beispiel gezeigt:
# 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 } ] )
-
X.509-Zertifikate erstellen.
Nachdem Sie das AWS IoT Ding-Objekt erstellt haben, müssen Sie ein X.509-Gerätezertifikat für Ihr Ding-Objekt erstellen. Dieses Zertifikat authentifiziert Ihr Gerät gegenüber AWS IoT Core.
Gehen Sie wie folgt vor, um einen privaten Schlüssel, einen öffentlichen Schlüssel und eine X.509-Zertifikatsdatei mit dem zuvor definierten AWS IoT Client (
iot_client
) zu erstellen.# 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')
-
Ordnen Sie den Rollenalias zu AWS IoT.
Wenn Sie eine Geräteflotte mit SageMaker KI (
sagemaker_client.create_device_fleet()
) erstellen, wird ein Rollenalias für Sie generiert. Ein AWS IoT Rollenalias bietet einen Mechanismus, mit dem sich verbundene Geräte AWS IoT mithilfe von X.509-Zertifikaten authentifizieren und dann kurzlebige AWS Anmeldeinformationen von einer IAM-Rolle abrufen können, die einem Rollenalias zugeordnet ist. AWS IoT Mit dem Rollenalias können Sie die Rolle des Gerätes ändern, ohne das Gerät aktualisieren zu müssen. Verwenden SieDescribeDeviceFleet
, um den Aliasnamen und den ARN der Rolle abzurufen.# 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:]
Verwenden Sie den
iot_client
, um die Zuordnung des bei der Erstellung der Geräteflotte generierten Rollenalias zu vereinfachen mit: AWS IoTrole_alias = iot_client.describe_role_alias( roleAlias=role_alias_name)
Weitere Informationen zum IAM-Rollenalias finden Sie unter Rollenalias ermöglicht Zugriff auf ungenutzte Dienste.
Sie haben AWS IoT zuvor ein Zertifikat erstellt und registriert, um Ihr Gerät erfolgreich zu authentifizieren. Jetzt müssen Sie eine Richtlinie erstellen und an das Zertifikat anhängen, um die Anforderung des Sicherheitstokens zu autorisieren.
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'])
-
Rufen Sie Ihren AWS kontospezifischen Endpunkt für den Anbieter der Anmeldeinformationen ab.
Edge-Geräte brauchen einen Endpunkt, um Anmeldeinformationen annehmen zu können. Rufen Sie Ihren AWS kontospezifischen Endpunkt für den Anbieter der Anmeldeinformationen ab.
# 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)
-
Holen Sie sich die offizielle Amazon-Root-CA-Datei und laden Sie sie in den Amazon-S3-Bucket hoch.
Verwenden Sie Folgendes in Ihrem Jupyter Notebook oder AWS CLI (wenn Sie Ihr Terminal verwenden, entfernen Sie das '!' magische Funktion):
!wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
Verwenden Sie den Endpunkt, um eine HTTPS-Anfrage an den Anmeldeinformationsanbieter zu stellen, ein Sicherheits-Token zurückzugeben. Der folgende Beispielbefehl verwendet
curl
, aber Sie können jeden beliebigen HTTP-Client verwenden.!curl --cert device.pem.crt --key private.pem.key --cacert AmazonRootCA1.pem $endpoint
Wenn das Zertifikat verifiziert ist, laden Sie die Schlüssel und das Zertifikat in Ihren Amazon-S3-Bucket-URI hoch:
!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/
Bereinigen Sie Ihr Arbeitsverzeichnis, indem Sie Ihre Schlüssel und Ihr Zertifikat in ein anderes Verzeichnis verschieben:
# Optional - Clean up working directory !mkdir authorization-files !mv private.pem.key device.pem.crt AmazonRootCA1.pem authorization-files/