Registre e autentique sua frota de dispositivos - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Registre e autentique sua frota de dispositivos

Nesta seção, você criará seu AWS IoT objeto, criará uma frota de dispositivos, registrará sua frota de dispositivos para que ela possa interagir com a nuvem, criará certificados X.509 para autenticar seus dispositivos AWS IoT Core, associará o alias de função ao AWS IoT que foi gerado quando você criou sua frota, obterá o endpoint AWS específico da conta para o provedor de credenciais, obterá um arquivo oficial da Amazon Root CA e fará o upload do arquivo Amazon CA para o Amazon S3.

  1. Crie AWS IoT coisas.

    SageMaker O Edge Manager aproveita os AWS IoT Core serviços para facilitar a conexão entre os dispositivos de ponta e os endpoints na AWS nuvem. Você pode aproveitar a AWS IoT funcionalidade existente depois de configurar seus dispositivos para trabalhar com o Edge Manager.

    Para conectar seu dispositivo a AWS IoT, você precisa criar objetos AWS IoT , criar e registrar um certificado de cliente com a AWS IoT e criar e configurar a IAM função para seus dispositivos.

    Primeiro, crie AWS IoT objetos com o AWS IoT cliente (iot_client) que você criou anteriormente com o Boto3. O exemplo a seguir mostra como criar dois objetos:

    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. Crie sua frota de dispositivos.

    Crie uma frota de dispositivos com o objeto SageMaker cliente definido em uma etapa anterior. Você também pode usar o SageMaker console para criar uma frota 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 sua função de IoT. ARN Isso permite AWS IoT conceder credenciais temporárias aos 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 } )

    Um alias de AWS IoT função é criado quando você cria uma frota de dispositivos. Esse alias de função está associado ao AWS IoT uso do iot_client objeto em uma etapa posterior.

  3. Registrar a frota de dispositivos.

    Para interagir com a nuvem, você precisa registrar seu dispositivo no SageMaker Edge Manager. Neste exemplo, você registra um único dispositivo com a frota que você criou. Para registrar o dispositivo, você precisa fornecer um nome de dispositivo e o nome da coisa AWS IoT , conforme mostrado no exemplo a seguir:

    # 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. Crie certificados X.509.

    Depois de criar o objeto de AWS IoT coisa, você deve criar um certificado de dispositivo X.509 para seu objeto de coisa. Esse certificado autentica seu dispositivo em AWS IoT Core.

    Use o seguinte para criar uma chave privada, uma chave pública e um arquivo de certificado X.509 usando o AWS IoT cliente definido (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. Associe o alias da função a. AWS IoT

    Quando você cria uma frota de dispositivos com SageMaker (sagemaker_client.create_device_fleet()), um alias de função é gerado para você. Um alias de AWS IoT função fornece um mecanismo para dispositivos conectados se autenticarem AWS IoT usando certificados X.509 e, em seguida, obterem AWS credenciais de curta duração de uma função associada a um alias de IAM função. AWS IoT O alias da função permite que você altere a função do dispositivo sem precisar atualizar o dispositivo. Use DescribeDeviceFleet para obter o nome do alias da função e. 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:]

    Use o iot_client para facilitar a associação do alias de função gerado pela criação da frota de dispositivos com: AWS IoT

    role_alias = iot_client.describe_role_alias( roleAlias=role_alias_name)

    Para obter mais informações sobre o alias de IAM função, consulte O alias de função permite acesso a serviços não utilizados.

    Você criou e registrou um certificado AWS IoT anteriormente para uma autenticação bem-sucedida do seu dispositivo. Agora, você precisa criar e anexar uma política ao certificado para autorizar a solicitação do token de segurança.

    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. Obtenha o endpoint AWS específico da sua conta para o provedor de credenciais.

    Os dispositivos Edge precisam de um endpoint para assumir as credenciais. Obtenha o endpoint AWS específico da sua conta para o provedor de credenciais.

    # 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. Obtenha o arquivo de CA raiz oficial da Amazon e faça upload para o bucket do Amazon S3.

    Use o seguinte em seu Jupyter Notebook ou AWS CLI (se você usa seu terminal, remova o '!' função mágica):

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

    Use o endpoint para fazer uma HTTPS solicitação ao provedor de credenciais para devolver um token de segurança. O comando de exemplo a seguir usacurl, mas você pode usar qualquer HTTP cliente.

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

    Se o certificado for verificado, faça o upload das chaves e do certificado em seu bucket do Amazon S3: URI

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

    Limpe seu diretório de trabalho movendo suas chaves e certificados para um diretório diferente:

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