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
-
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
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.
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
Untuk menggunakan AWS IoT SiteWise aplikasi AWS OpsHub untuk mendapatkan kredensyal sementara Anda lakukan hal berikut:
Masuk ke aplikasi.
Pilih Pengaturan.
Untuk Otentikasi, pilih Salin kredensyal.
Perluas opsi yang sesuai dengan lingkungan Anda dan pilih Salin.
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
-
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:])
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
-
Anda perlu menginstal curl.
Untuk mendapatkan kredensyal menggunakan curl
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"
}
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
-
Untuk mendapatkan daftar model aset menggunakan Python
-
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)
Jalankan list_asset_model.py dari terminal.
python3 list_asset_model.py
- curl
-
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
}