Tutoriel : Obtenir une liste de modèles d'actifs sur une passerelle SiteWise Edge - AWS IoT SiteWise

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel : Obtenir une liste de modèles d'actifs sur une passerelle SiteWise Edge

Vous pouvez utiliser un sous-ensemble des AWS IoT SiteWise API disponibles ainsi que des API spécifiques à la périphérie pour interagir avec les modèles d'actifs et leurs actifs en périphérie. Ce didacticiel vous expliquera comment obtenir des informations d'identification temporaires sur une passerelle AWS IoT SiteWise Edge et comment obtenir une liste des modèles d'actifs sur la passerelle SiteWise Edge.

Prérequis

Dans les étapes de ce didacticiel, vous pouvez utiliser une variété d'outils. Pour utiliser ces outils, assurez-vous que les prérequis correspondants sont installés.

Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :

Étape 1 : obtenir un certificat signé du service SiteWise Edge Gateway

Pour établir une connexion TLS avec les API disponibles sur la passerelle SiteWise Edge, vous avez besoin d'un certificat fiable. Vous pouvez générer ce certificat à l'aide d'un OpenSSL ou pourAWS OpsHub. AWS IoT SiteWise

OpenSSL
Note

OpenSSL doit être installé pour exécuter cette commande.

Ouvrez un terminal et exécutez la commande suivante pour obtenir un certificat signé auprès de la passerelle SiteWise Edge. <sitewise_gateway_ip>Remplacez-le par l'adresse IP de la passerelle SiteWise Edge.

openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > GatewayCert.pem
AWS OpsHub for AWS IoT SiteWise

Vous pouvez utiliser AWS OpsHub pourAWS IoT SiteWise. Pour plus d’informations, consultez Gérer les passerelles SiteWise Edge.

Le chemin absolu vers le certificat de passerelle SiteWise Edge téléchargé est utilisé dans ce didacticiel. Exécutez la commande suivante pour exporter le chemin complet de votre certificat, en le <absolute_path_to_certificate> remplaçant par le chemin d'accès au certificat :

export PATH_TO_CERTIFICATE='<absolute_path_to_certificate>'

Étape 2 : obtenir le nom d'hôte de votre passerelle SiteWise Edge

Note

OpenSSL doit être installé pour exécuter cette commande.

Pour terminer le didacticiel, vous aurez besoin du nom d'hôte de votre passerelle SiteWise Edge. Pour obtenir le nom d'hôte de votre passerelle SiteWise Edge, exécutez ce qui suit, en le <sitewise_gateway_ip> remplaçant par l'adresse IP de la passerelle SiteWise Edge :

openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | grep -Po 'CN = \K.*'| head -1

Exécutez la commande suivante pour exporter le nom d'hôte à utiliser ultérieurement, en le <your_edge_gateway_hostname> remplaçant par le nom d'hôte de votre passerelle SiteWise Edge :

export GATEWAY_HOSTNAME='<your_edge_gateway_hostname>'

Étape 3 : obtenir des informations d'identification temporaires pour votre passerelle SiteWise Edge

Maintenant que vous avez le certificat signé et le nom d'hôte de votre passerelle SiteWise Edge, vous devez obtenir des informations d'identification temporaires afin de pouvoir exécuter des API sur la passerelle. Vous pouvez obtenir ces informations d'identification via AWS OpsHub AWS IoT SiteWise ou directement depuis la passerelle SiteWise Edge à l'aide d'API.

Important

Les informations d'identification expirent toutes les 4 heures. Vous devez donc les obtenir juste avant d'utiliser les API de votre passerelle SiteWise Edge. Ne mettez pas les informations d'identification en cache pendant plus de 4 heures.

Obtenez des informations d'identification temporaires à l'aide AWS OpsHub de AWS IoT SiteWise

Note

AWS OpsHubPour utiliser l'AWS IoT SiteWiseapplication afin d'obtenir vos informations d'identification temporaires, procédez comme suit :

  1. Connectez-vous à l'application.

  2. Sélectionnez Settings (Paramètres).

  3. Pour Authentification, choisissez Copier les informations d'identification.

  4. Développez l'option adaptée à votre environnement et choisissez Copier.

  5. Enregistrez les informations d'identification pour les utiliser ultérieurement.

Obtenez des informations d'identification temporaires à l'aide de l'API de passerelle SiteWise Edge

Pour utiliser l'API de passerelle SiteWise Edge afin d'obtenir les informations d'identification temporaires, vous pouvez utiliser un script Python ou un curl. Vous devez d'abord disposer d'un nom d'utilisateur et d'un mot de passe pour votre passerelle SiteWise Edge. Les passerelles SiteWise Edge utilisent l'authentification et l'autorisation SigV4. Pour plus d'informations sur l'ajout d'utilisateurs, consultez LDAP ou groupe d'utilisateurs Linux. Ces informations d'identification seront utilisées dans les étapes suivantes pour obtenir les informations d'identification locales sur votre passerelle SiteWise Edge qui sont nécessaires pour utiliser les AWS IoT SiteWise API.

Python
Note

Vous devez installer urllib3 et Python3.

Pour obtenir les informations d'identification à l'aide de Python
  1. Créez un fichier appelé get_credentials.py et copiez-y le code suivant.

    ''' The following demonstrates how to get the credentials from the SiteWise Edge gateway. You will need to add local users or connect your system to LDAP/AD https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#create-user-pool Example usage: python3 get_credentials.py -e https://<gateway_hostname> -c <path_to_certificate> -u '<gateway_username>' -p '<gateway_password>' -m '<method>' ''' import urllib3 import json import urllib.parse import sys import os import getopt """ This function retrieves the AWS IoT SiteWise Edge gateway credentials. """ def get_credentials(endpoint,certificatePath, user, password, method): http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs= certificatePath) encoded_body = json.dumps({ "username": user, "password": password, "authMechanism": method, }) url = urllib.parse.urljoin(endpoint, "/authenticate") response = http.request('POST', url, headers={'Content-Type': 'application/json'}, body=encoded_body) if response.status != 200: raise Exception(f'Failed to authenticate! Response status {response.status}') auth_data = json.loads(response.data.decode('utf-8')) accessKeyId = auth_data["accessKeyId"] secretAccessKey = auth_data["secretAccessKey"] sessionToken = auth_data["sessionToken"] region = "edge" return accessKeyId, secretAccessKey, sessionToken, region def print_help(): print('Usage:') print(f'{os.path.basename(__file__)} -e <endpoint> -c <path/to/certificate> -u <user> -p <password> -m <method> -a <alias>') print('') print('-e, --endpoint edge gateway endpoint. Usually the Edge gateway hostname.') print('-c, --cert_path path to downloaded gateway certificate') print('-u, --user Edge user') print('-p, --password Edge password') print('-m, --method (Optional) Authentication method (linux, winnt, ldap), default is linux') sys.exit() def parse_args(argv): endpoint = "" certificatePath = None user = None password = None method = "linux" try: opts, args = getopt.getopt(argv, "he:c:u:p:m:", ["endpoint=","cert_path=", "user=", "password=", "method="]) except getopt.GetoptError: print_help() for opt, arg in opts: if opt == '-h': print_help() elif opt in ("-e", "--endpoint"): endpoint = arg elif opt in ("-u", "--user"): user = arg elif opt in ("-p", "--password"): password = arg elif opt in ("-m", "--method"): method = arg.lower() elif opt in ("-c", "--cert_path"): certificatePath = arg if method not in ['ldap', 'linux', 'winnt']: print("not valid method parameter, required are ldap, linux, winnt") print_help() if (user == None or password == None): print("To authenticate against edge user, password have to be passed together, and the region has to be set to 'edge'") print_help() if(endpoint == ""): print("You must provide a valid and reachable gateway hostname") print_help() return endpoint,certificatePath, user, password, method def main(argv): # get the command line args endpoint, certificatePath, user, password, method = parse_args(argv) accessKeyId, secretAccessKey, sessionToken, region=get_credentials(endpoint, certificatePath, user, password, method) print("Copy and paste the following credentials into the shell, they are valid for 4 hours:") print(f"export AWS_ACCESS_KEY_ID={accessKeyId}") print(f"export AWS_SECRET_ACCESS_KEY={secretAccessKey}") print(f"export AWS_SESSION_TOKEN={sessionToken}") print(f"export AWS_REGION={region}") print() if __name__ == "__main__": main(sys.argv[1:])
  2. Exécutez get_credentials.py depuis le terminal en remplaçant <gateway_username> et en utilisant <gateway_password> les informations d'identification que vous avez créées.

    python3 get_credentials.py -e https://$GATEWAY_HOSTNAME -c $PATH_TO_CERTIFICATE -u '<gateway_username>' -p '<gateway_password>' -m 'linux'
curl
Note

Vous devez installer Curl.

Pour obtenir les informations d'identification à l'aide de curl
  1. Exécutez la commande suivante depuis le terminal en remplaçant <gateway_username>et en utilisant <gateway_password>les informations d'identification que vous avez créées.

    curl --cacert $PATH_TO_CERTIFICATE --location \ -X POST https://$GATEWAY_HOSTNAME:443/authenticate \ --header 'Content-Type: application/json' \ --data-raw '{ "username": "<gateway_username>", "password": "<gateway_password>", "authMechanism": "linux" }'

    Les résultats doivent avoir l’aspect suivant :

    { "username": "sweuser", "accessKeyId": "<accessKeyId>", "secretAccessKey": "<secretAccessKey>", "sessionToken": "<sessionToken>", "sessionExpiryTime": "2022-11-17T04:51:40.927095Z", "authMechanism": "linux", "role": "edge-user" }
  2. Exécutez la commande suivante à partir de votre terminal.

    export AWS_ACCESS_KEY_ID=<accessKeyId> export AWS_SECRET_ACCESS_KEY=<secretAccessKey> export AWS_SESSION_TOKEN=<sessionToken> export AWS_REGION=edge

Étape 4 : obtenir une liste des modèles d'actifs sur la passerelle SiteWise Edge

Maintenant que vous disposez d'un certificat signé, du nom d'hôte de votre passerelle SiteWise Edge et des informations d'identification temporaires pour votre passerelle SiteWise Edge, vous pouvez utiliser l'ListAssetModelsAPI pour obtenir une liste des modèles d'actifs de votre passerelle SiteWise Edge.

Python
Note

Vous avez besoin de Python3, Boto3 et d'une installation. BotoCore

Pour obtenir la liste des modèles d'actifs à l'aide de Python
  1. Créez un fichier appelé list_asset_model.py et copiez-y le code suivant.

    import json import boto3 import botocore import os # create the client using the credentials client = boto3.client("iotsitewise", endpoint_url= "https://"+ os.getenv("GATEWAY_HOSTNAME"), region_name=os.getenv("AWS_REGION"), aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"), aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"), aws_session_token=os.getenv("AWS_SESSION_TOKEN"), verify=os.getenv("PATH_TO_CERTIFICATE"), config=botocore.config.Config(inject_host_prefix=False)) # call the api using local credentials response = client.list_asset_models() print(response)
  2. Exécutez list_asset_model.py depuis le terminal.

    python3 list_asset_model.py
curl
Note

Vous devez installer Curl.

Pour obtenir la liste des modèles d'actifs à l'aide de curl

Exécutez la commande suivante depuis le terminal.

curl \ --request GET https://$GATEWAY_HOSTNAME:443/asset-models \ --cacert $PATH_TO_CERTIFICATE \ --aws-sigv4 "aws:amz:edge:iotsitewise" \ --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \ -H "x-amz-security-token:$AWS_SESSION_TOKEN"

Les résultats doivent avoir l’aspect suivant :

{ "assetModelSummaries": [ { "arn": "arn:aws:iotsitewise:{region}:{account-id}:asset-model/{asset-model-id}", "creationDate": 1.669245291E9, "description": "This is a small example asset model", "id": "{asset-model-id}", "lastUpdateDate": 1.669249038E9, "name": "Some Metrics Model", "status": { "error": null, "state": "ACTIVE" } }, . . . ], "nextToken": null }