Crie e registre frotas e autentique 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á.

Crie e registre frotas e autentique 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. Criar 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 ao AWS IoT, você precisa criar objetos AWS IoT, criar e registrar um certificado de cliente com a AWS IoT e criar e configurar a função do IAM 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 o ARN da sua função de IoT. 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 da função AWS IoT é 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 da coisa AWS IoT, 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 função AWS IoT fornece um mecanismo para dispositivos conectados autenticarem-se no AWS IoT usando certificados X.509 e, em seguida, obter credenciais AWS de curta duração de uma função do IAM associada a um alias de 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 o 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 função do IAM, 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 Bloco de anotações Jupyter 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 solicitação HTTPS ao provedor de credenciais para que retorne um token de segurança. O comando de exemplo a seguir usa curl, mas é possível usar qualquer cliente HTTP.

    !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 para o URI do bucket do 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/

    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/