View a markdown version of this page

Daftarkan dan Otentikasi Armada Perangkat Anda - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Daftarkan dan Otentikasi Armada Perangkat Anda

Di bagian ini Anda akan membuat objek AWS IoT benda Anda, membuat armada perangkat, mendaftarkan armada perangkat Anda sehingga dapat berinteraksi dengan cloud, membuat X.509 sertifikat untuk mengotentikasi perangkat Anda AWS IoT Core, mengaitkan alias peran dengan AWS IoT yang dihasilkan saat Anda membuat armada, mendapatkan titik akhir AWS khusus akun Anda untuk penyedia kredenSIAL, dapatkan file CA Root Amazon resmi, dan unggah file Amazon CA ke Amazon S3.

  1. Ciptakan AWS IoT sesuatu.

    SageMaker Edge Manager memanfaatkan AWS IoT Core layanan untuk memfasilitasi koneksi antara perangkat edge dan titik akhir di AWS cloud. Anda dapat memanfaatkan AWS IoT fungsionalitas yang ada setelah Anda mengatur perangkat agar berfungsi dengan Edge Manager.

    Untuk menghubungkan perangkat Anda AWS IoT, Anda perlu membuat objek AWS IoT benda, membuat dan mendaftarkan sertifikat klien dengan AWS IoT, dan membuat dan mengonfigurasi peran IAM untuk perangkat Anda.

    Pertama, buat objek AWS IoT benda dengan AWS IoT client (iot_client) yang Anda buat sebelumnya dengan Boto3. Contoh berikut menunjukkan cara membuat objek dua hal:

    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. Buat armada perangkat Anda.

    Buat armada perangkat dengan objek klien SageMaker AI yang ditentukan pada langkah sebelumnya. Anda juga dapat menggunakan konsol SageMaker AI untuk membuat armada perangkat.

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

    Tentukan peran IoT Anda ARN. Ini memungkinkan memberikan AWS IoT kredenSIAL sementara ke perangkat.

    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 } )

    Alias AWS IoT peran dibuat saat Anda membuat armada perangkat. Alias peran ini dikaitkan dengan AWS IoT penggunaan iot_client objek di langkah selanjutnya.

  3. Daftarkan armada perangkat Anda.

    Untuk berinteraksi dengan cloud, Anda perlu mendaftarkan perangkat Anda dengan SageMaker Edge Manager. Dalam contoh ini, Anda mendaftarkan satu perangkat dengan armada yang Anda buat. Untuk mendaftarkan perangkat, Anda perlu memberikan nama perangkat dan nama AWS IoT benda seperti yang ditunjukkan dalam contoh berikut:

    # 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. Buat X.509 sertifikat.

    Setelah membuat objek AWS IoT benda, Anda harus membuat sertifikat X.509 perangkat untuk objek benda Anda. Sertifikat ini mengotentikasi perangkat Anda ke AWS IoT Core.

    Gunakan yang berikut ini untuk membuat kunci pribadi, kunci publik, dan file X.509 sertifikat menggunakan AWS IoT client defined (iot_client) sebelumnya.

    # 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. Kaitkan alias peran dengan AWS IoT.

    Saat Anda membuat armada perangkat dengan SageMaker AI (sagemaker_client.create_device_fleet()), alias peran dibuat untuk Anda. Alias AWS IoT peran menyediakan mekanisme untuk perangkat yang terhubung untuk mengotentikasi AWS IoT menggunakan X.509 sertifikat, dan kemudian mendapatkan AWS kredenSIAL berumur pendek dari peran IAM yang terkait dengan alias AWS IoT peran. Alias peran memungkinkan Anda mengubah peran perangkat tanpa harus memperbarui perangkat. Gunakan DescribeDeviceFleet untuk mendapatkan nama alias peran dan 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:]

    Gunakan iot_client untuk memfasilitasi mengaitkan alias peran yang dihasilkan dari pembuatan armada perangkat dengan: AWS IoT

    role_alias = iot_client.describe_role_alias( roleAlias=role_alias_name)

    Untuk informasi selengkapnya tentang alias peran IAM, lihat Alias peran memungkinkan akses ke layanan yang tidak digunakan.

    Anda membuat dan mendaftarkan sertifikat AWS IoT sebelumnya untuk otentikasi perangkat Anda berhasil. Sekarang, Anda perlu membuat dan melampirkan kebijakan ke sertifikat untuk mengotorisasi permintaan token keamanan.

    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. Dapatkan titik akhir AWS khusus akun Anda untuk penyedia kredenSIAL.

    Perangkat Edge memerlukan titik akhir untuk mengasumsikan kredenSIAL. Dapatkan titik akhir AWS khusus akun Anda untuk penyedia kredenSIAL.

    # 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. Dapatkan file CA root Amazon resmi dan unggah ke bucket Amazon S3.

    Gunakan yang berikut ini di Notebook Jupyter Anda atau AWS CLI (jika Anda menggunakan terminal Anda, hapus '!' fungsi sihir):

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

    Gunakan titik akhir untuk membuat permintaan HTTPS ke penyedia kredenSIAL untuk mengembalikan token keamanan. Contoh perintah berikut menggunakancurl, tetapi Anda dapat menggunakan klien HTTP apa pun.

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

    Jika sertifikat diverifikasi, unggah kunci dan sertifikat ke URI bucket Amazon S3 Anda:

    !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/

    Bersihkan direktori kerja Anda dengan memindahkan kunci dan sertifikat Anda ke direktori lain:

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