

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

# Tutorial: Daftar model aset padaAWS IoT SiteWiseGerbang tepi
<a name="edge-apis-tutorial"></a>

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 kredensi sementara ke gateway AWS IoT SiteWise Edge dan mendapatkan daftar model aset di gateway SiteWise Edge.

## Prasyarat
<a name="edge-apis-tutorial-prerequisites"></a>

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:
+ Sebuah dikerahkan dan berjalan [AWS IoT SiteWisePersyaratan gateway yang dihosting sendiri di Edge](configure-gateway-ggv2.md)
+ Akses ke gateway SiteWise Edge Anda di jaringan yang sama melalui port 443.
+ [OpenSSL diinstal](https://www.openssl.org/)
+ (AWS OpsHubuntukAWS IoT SiteWise) [AWS IoT SiteWiseAplikasi AWS OpsHub untuk](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app)
+ (curl) [curl](https://ec.haxx.se/install/) terpasang
+ [(Python) urllib3 diinstal](https://urllib3.readthedocs.io/en/stable/index.html)
+ [(Python) Python3 diinstal](https://www.python.org/downloads/)
+ [(Python) Boto3 diinstal](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)
+ (Python) diinstal [BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)

## Langkah 1: Dapatkan sertifikat yang ditandatangani layanan gateway SiteWise Edge
<a name="edge-apis-tutorial-gateway-cert"></a>

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](https://www.openssl.org/) 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 OpsHubforAWS IoT SiteWise ]

Anda dapat menggunakan AWS OpsHub untukAWS IoT SiteWise. Untuk informasi selengkapnya, lihat [Kelola SiteWise gateway Edge](manage-gateways-ggv2.md).

------

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
<a name="edge-apis-tutorial-gateway-hostname"></a>

**catatan**  
Anda perlu [OpenSSL](https://www.openssl.org/) 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
<a name="edge-apis-tutorial-temporary-credentials"></a>

Sekarang setelah Anda memiliki sertifikat yang ditandatangani dan nama host gateway SiteWise Edge Anda, Anda perlu mendapatkan kredensi 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**  
Kredenal kedaluwarsa setiap 4 jam, jadi Anda harus mendapatkan kredensialnya sebelum menggunakan API di gateway Edge Anda. SiteWise Jangan menyimpan kredensil selama lebih dari 4 jam.

### Dapatkan kredensi sementara menggunakanAWS OpsHubuntukAWS IoT SiteWise
<a name="edge-apis-tutorial-temp-creds-opshub"></a>

**catatan**  
Anda memerlukan [AWS IoT SiteWiseaplikasi AWS OpsHub for](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) diinstal.

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

1. Masuk ke aplikasi.

1. Pilih **Pengaturan**.

1. Untuk **Otentikasi**, pilih **Salin kredensi**.

1. Perluas opsi yang sesuai dengan lingkungan Anda dan pilih **Salin**.

1. Simpan kredensialnya untuk digunakan nanti.

### Dapatkan kredensyal sementara menggunakan SiteWise Edge gateway API
<a name="edge-apis-tutorial-temp-creds-api"></a>

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](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) atau Linux](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app). Kredensi ini akan digunakan dalam langkah-langkah berikut untuk mendapatkan kredensil lokal di gateway SiteWise Edge Anda yang diperlukan untuk menggunakan API. AWS IoT SiteWise

------
#### [ Python ]

**catatan**  
[Anda perlu menginstal [urllib3 dan Python3](https://urllib3.readthedocs.io/en/stable/index.html).](https://www.python.org/downloads/)

**Untuk mendapatkan kredensialnya 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 theAWS IoT SiteWiseEdge 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:])
   ```

1. Jalankan **get\_credentials.py** dari terminal menggantikan `<gateway_username>` dan `<gateway_password>` dengan kredensil 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](https://ec.haxx.se/install/).

**Untuk mendapatkan kredensil 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"
   }
   ```

1. 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
<a name="edge-apis-tutorial-get-asset-models"></a>

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](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)](https://www.python.org/downloads/), dan diinstal. [BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)

**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)
   ```

1. Jalankan **list\_asset\_model.py** dari terminal.

   ```
   python3 list_asset_model.py
   ```

------
#### [ curl ]

**catatan**  
Anda perlu menginstal [curl](https://ec.haxx.se/install/).

**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
}
```

------