Tutorial: Mendapatkan daftar model aset di gateway SiteWise Edge - AWS IoT SiteWise

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

Tutorial: Mendapatkan daftar model aset di gateway SiteWise Edge

Anda dapat menggunakan subset API yang tersedia bersama dengan AWS IoT SiteWise API khusus tepi untuk berinteraksi dengan model aset dan asetnya di edge. Tutorial ini akan memandu Anda mendapatkan kredensyal sementara ke gateway AWS IoT SiteWise Edge dan mendapatkan daftar model aset di gateway SiteWise Edge.

Prasyarat

Dalam langkah-langkah tutorial ini Anda dapat menggunakan berbagai alat. Untuk menggunakan alat ini, pastikan Anda telah menginstal prasyarat yang sesuai.

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:

Langkah 1: Dapatkan sertifikat yang ditandatangani layanan gateway SiteWise Edge

Untuk membuat koneksi TLS ke API yang tersedia di gateway SiteWise Edge, Anda memerlukan sertifikat tepercaya. Anda dapat membuat sertifikat ini menggunakan AWS OpsHub OpenSSL atau for. AWS IoT SiteWise

OpenSSL
catatan

Anda perlu OpenSSL diinstal untuk menjalankan perintah ini.

Buka terminal dan jalankan perintah berikut untuk mendapatkan sertifikat yang ditandatangani dari gateway SiteWise Edge. Ganti <sitewise_gateway_ip> dengan IP gateway 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

Anda dapat menggunakan AWS OpsHub untukAWS IoT SiteWise. Untuk informasi selengkapnya, lihat Kelola SiteWise gateway Edge.

Jalur absolut ke sertifikat gateway SiteWise Edge yang diunduh digunakan dalam tutorial ini. Jalankan perintah berikut untuk mengekspor jalur lengkap sertifikat Anda, ganti <absolute_path_to_certificate> dengan jalur ke sertifikat:

export PATH_TO_CERTIFICATE='<absolute_path_to_certificate>'

Langkah 2: Dapatkan nama host gateway SiteWise Edge Anda

catatan

Anda perlu OpenSSL diinstal untuk menjalankan perintah ini.

Untuk menyelesaikan tutorial, Anda memerlukan nama host gateway SiteWise Edge Anda. Untuk mendapatkan nama host gateway SiteWise Edge Anda, jalankan yang berikut ini, ganti <sitewise_gateway_ip> dengan IP gateway SiteWise Edge:

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

Jalankan perintah berikut untuk mengekspor nama host untuk digunakan nanti, ganti <your_edge_gateway_hostname> dengan nama host gateway SiteWise Edge Anda:

export GATEWAY_HOSTNAME='<your_edge_gateway_hostname>'

Langkah 3: Dapatkan kredensyal sementara untuk gateway Edge Anda SiteWise

Sekarang setelah Anda memiliki sertifikat yang ditandatangani dan nama host gateway SiteWise Edge Anda, Anda perlu mendapatkan kredensyal sementara sehingga Anda dapat menjalankan API di gateway. Anda bisa mendapatkan kredensyal ini melalui AWS OpsHub for AWS IoT SiteWise atau langsung dari gateway SiteWise Edge menggunakan API.

penting

Kredensyal kedaluwarsa setiap 4 jam, jadi Anda harus mendapatkan kredensialnya sebelum menggunakan API di gateway Edge Anda. SiteWise Jangan menyimpan kredensyal selama lebih dari 4 jam.

Dapatkan kredensyal sementara menggunakan for AWS OpsHubAWS IoT SiteWise

catatan

Anda memerlukan AWS IoT SiteWiseaplikasi AWS OpsHub for diinstal.

Untuk menggunakan AWS IoT SiteWise aplikasi AWS OpsHub untuk mendapatkan kredensyal sementara Anda lakukan hal berikut:

  1. Masuk ke aplikasi.

  2. Pilih Pengaturan.

  3. Untuk Otentikasi, pilih Salin kredensyal.

  4. Perluas opsi yang sesuai dengan lingkungan Anda dan pilih Salin.

  5. Simpan kredensialnya untuk digunakan nanti.

Dapatkan kredensyal sementara menggunakan SiteWise Edge gateway API

Untuk menggunakan SiteWise Edge gateway API untuk mendapatkan kredensyal sementara, Anda dapat menggunakan skrip Python atau curl, pertama-tama Anda harus memiliki nama pengguna dan kata sandi untuk gateway Edge Anda. SiteWise Gateway SiteWise Edge menggunakan otentikasi dan otorisasi SiGv4. Untuk informasi selengkapnya tentang menambahkan pengguna, lihat kumpulan pengguna LDAP atau Linux. Kredensyal ini akan digunakan dalam langkah-langkah berikut untuk mendapatkan kredensyal lokal di gateway SiteWise Edge Anda yang diperlukan untuk menggunakan API. AWS IoT SiteWise

Python
Untuk mendapatkan kredensyal menggunakan Python
  1. Buat file bernama get_credentials.py dan salin kode berikut ke dalamnya.

    ''' 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. Jalankan get_credentials.py dari terminal menggantikan <gateway_username> dan <gateway_password> dengan kredensyal yang Anda buat.

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

Anda perlu menginstal curl.

Untuk mendapatkan kredensyal menggunakan curl
  1. Jalankan perintah berikut dari penggantian terminal <gateway_username>dan <gateway_password>dengan kredensyal yang Anda buat.

    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" }'

    Responsnya akan terlihat seperti berikut:

    { "username": "sweuser", "accessKeyId": "<accessKeyId>", "secretAccessKey": "<secretAccessKey>", "sessionToken": "<sessionToken>", "sessionExpiryTime": "2022-11-17T04:51:40.927095Z", "authMechanism": "linux", "role": "edge-user" }
  2. Jalankan perintah berikut dari terminal Anda.

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

Langkah 4: Dapatkan daftar model aset di gateway SiteWise Edge

Sekarang setelah Anda memiliki sertifikat yang ditandatangani, nama host gateway SiteWise Edge Anda, dan kredensyal sementara untuk gateway SiteWise Edge Anda, Anda dapat menggunakan ListAssetModels API untuk mendapatkan daftar model aset di gateway Edge Anda SiteWise .

Python
catatan

Anda perlu Python3, Boto3, dan diinstal. BotoCore

Untuk mendapatkan daftar model aset menggunakan Python
  1. Buat file bernama list_asset_model.py dan salin kode berikut ke dalamnya.

    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. Jalankan list_asset_model.py dari terminal.

    python3 list_asset_model.py
curl
catatan

Anda perlu menginstal curl.

Untuk mendapatkan daftar model aset menggunakan curl

Jalankan perintah berikut dari 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"

Responsnya akan terlihat seperti berikut:

{ "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 }