

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

# Gunakan AWS IoT SiteWise APIs di tepi
<a name="edge-apis"></a>

AWS IoT SiteWise menyediakan subset dari APIs, bersama dengan spesifik tepi APIs, memungkinkan interaksi tanpa batas dengan model aset dan aset terkait yang digunakan di edge. Model aset ini harus dikonfigurasi untuk berjalan di tepi. Untuk informasi selengkapnya, lihat [Konfigurasikan model aset untuk pemrosesan data di SiteWise Edge](edge-processing.md#process-gateway-data-edge) petunjuk terperinci tentang proses penyiapan ini.

Setelah mengonfigurasinya APIs, Anda dapat mengambil data komprehensif tentang model aset dan aset individual Anda. Mengambil model aset, aset, dasbor, portal, dan informasi proyek dapat membantu Anda memantau portal dan dasbor yang digunakan, serta mengakses data aset yang dikumpulkan di tingkat tepi. Ini menyediakan host pusat di jaringan Anda untuk interaksi dengan AWS IoT SiteWise tanpa memerlukan panggilan API web. 

**Topics**
+ [Semua perangkat AWS IoT SiteWise Edge yang tersedia APIs](edge-apis-available.md)
+ [Hanya tepi APIs untuk digunakan dengan AWS IoT SiteWise perangkat tepi](edge-local-apis.md)
+ [Aktifkan CORS di Edge AWS IoT SiteWise APIs](enable-cors-edge-apis.md)
+ [Konfigurasikan batas waktu sesi untuk Edge AWS IoT SiteWise](edge-apis-session-timeout.md)
+ [Tutorial: Daftar model aset pada gateway AWS IoT SiteWise Edge](edge-apis-tutorial.md)

# Semua perangkat AWS IoT SiteWise Edge yang tersedia APIs
<a name="edge-apis-available"></a>

AWS IoT SiteWise menyediakan berbagai APIs untuk digunakan pada perangkat edge sehingga Anda dapat menyelesaikan tugas secara lokal di perangkat. Beberapa edge yang tersedia APIs termasuk mengambil model aset, membuat dan memperbarui properti aset, dan mengirim aliran data ke cloud. Dengan memanfaatkan ini APIs, Anda dapat membangun solusi yang dapat beroperasi di lingkungan dengan konektivitas jaringan intermiten atau terbatas.

## Tersedia AWS IoT SiteWise APIs
<a name="edge-apis-available-sw"></a>

Berikut ini AWS IoT SiteWise APIs tersedia di perangkat edge:
+ [ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)
+ [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)
+ [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)
+ [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)
+ [DescribeAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetProperty.html)
+ [ListAssociatedAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html)
+ [GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html)
+ [GetAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html)
+ [GetAssetPropertyValueHistory](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html)
+ [ListDashboards](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListDashboards.html)
+ [ListPortals](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListPortals.html)
+ [ListProjectAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListProjectAssets.html)
+ [ListProjects](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListProjects.html)
+ [DescribeDashboard](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeDashboard.html)
+ [DescribePortal](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribePortal.html)
+ [DescribeProject](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeProject.html)

## Tersedia hanya tepi APIs
<a name="edge-apis-available-local"></a>

Berikut ini APIs digunakan secara lokal pada perangkat di tepi:
+ [Mengautentikasi](edge-local-apis.md#edge-local-apis-authenticate)— Gunakan API ini untuk mendapatkan kredensyal sementara SigV4 yang akan Anda gunakan untuk melakukan panggilan API.

# Hanya tepi APIs untuk digunakan dengan AWS IoT SiteWise perangkat tepi
<a name="edge-local-apis"></a>

Selain AWS IoT SiteWise APIs yang tersedia di tepi, ada yang khusus tepi. Spesifik tepi tersebut dijelaskan di bawah APIs ini.

## Mengautentikasi
<a name="edge-local-apis-authenticate"></a>

Mendapat kredensyal dari gateway SiteWise Edge. Anda harus menambahkan pengguna lokal atau terhubung ke sistem Anda menggunakan LDAP atau kumpulan pengguna Linux. 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).

### Sintaksis Permintaan
<a name="authenticate-request-syntax"></a>

```
POST /authenticate HTTP/1.1
Content-type: application/json
{
  "username": "string",
  "password": "string",
  "authMechanism": "string"
}
```

### Parameter permintaan URI
<a name="authenticate-request-parameters"></a>

Permintaan tidak menggunakan parameter URI apa pun.

### Isi permintaan
<a name="authenticate-request-body"></a>

Permintaan menerima data berikut dalam format JSON.

**nama pengguna**  
Nama pengguna yang digunakan untuk memvalidasi panggilan permintaan.  
Tipe: String  
Diperlukan: Ya

**password**  
Kata sandi pengguna yang meminta kredensil.  
Tipe: String  
Diperlukan: Ya

**AuthMechanism**  
Metode otentikasi untuk memvalidasi pengguna ini di host.  
Tipe: String  
Nilai valid: `ldap`, `linux`, `winnt`  
Wajib: Ya

### Sintaksis Respons
<a name="authenticate-response-syntax"></a>

```
HTTP/1.1 200
Content-type: application/json
{
  "accessKeyId": "string",
  "secretAccessKey": "string",
  "sessionToken": "string",
  "region": "edge"
}
```

### Elemen jawaban
<a name="authenticate-response-elements"></a>

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Data berikut dikembalikan dalam format JSON.

**accessKeyId**  
ID kunci akses yang mengidentifikasi kredensil keamanan sementara.  
Kendala Panjang: Panjang minimum 16. Panjang maksimum 128.  
Pola: `[\w]*`

**secretAccessKey**  
Kunci akses rahasia yang dapat digunakan untuk menandatangani permintaan.  
Tipe: String

**sessionToken**  
Token yang harus diteruskan pengguna ke API layanan untuk menggunakan kredensyal sementara.  
Tipe: String

**region**  
Wilayah yang Anda targetkan untuk panggilan API.  
Jenis: KONSTAN - `edge`

### Kesalahan
<a name="authenticate-errors"></a>

**IllegalArgumentException**  
Permintaan ditolak karena dokumen badan yang disediakan cacat. Pesan kesalahan menjelaskan kesalahan tertentu.  
Kode Status HTTP: 400

**AccessDeniedException**  
Pengguna tidak memiliki kredensi yang valid berdasarkan Penyedia Identitas saat ini. Pesan kesalahan menjelaskan Mekanisme otentikasi.  
Kode Status HTTP: 403

**TooManyRequestsException**  
Permintaan telah mencapai batas upaya otentikasi. Pesan kesalahan berisi jumlah waktu untuk menunggu sampai upaya otentikasi baru dilakukan.  
Kode Status HTTP: 429

# Aktifkan CORS di Edge AWS IoT SiteWise APIs
<a name="enable-cors-edge-apis"></a>

Mengaktifkan CORS (Cross-Origin Resource Sharing) di AWS IoT SiteWise Edge APIs memungkinkan aplikasi web untuk berkomunikasi langsung dengan APIs berbagai domain. Hal ini memungkinkan integrasi tanpa batas, pertukaran data real-time, dan akses data lintas domain tanpa server perantara atau solusi. Pengaturan CORS dapat dikonfigurasi untuk menentukan asal yang diizinkan, memastikan akses lintas asal yang terkontrol. 

**catatan**  
CORS tersedia untuk versi 3.3.1 dan yang lebih baru dari Fitur ini tersedia untuk versi 3.3.1 dan yang lebih baru dari komponen. `aws.iot.SiteWiseEdgeProcessor` Untuk informasi selengkapnya, lihat [AWS IoT SiteWise prosesor](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-processor-component.html) di *Panduan AWS IoT Greengrass Version 2 Pengembang*.

**Untuk mengaktifkan CORS di SiteWise Edge APIs**

1. Navigasikan ke [konsol AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/) tersebut.

1. Di panel navigasi, pilih **gateway Edge**.

1. Pilih gateway SiteWise Edge yang ingin Anda aktifkan CORS. Anda dapat mengaktifkan CORS pada jenis AWS IoT Greengrass V2 penerapan.

1. Di bagian **konfigurasi Gateway**, pilih perangkat inti **Greengrass** terkait.

1. Di tab **Deployment**, di bawah Perangkat Greengrass, pilih **tautan penerapan yang sesuai**.

1. Di bawah **Tindakan** pilih **Revisi**, lalu **Revisi penerapan**.
**penting**  
Membuat konfigurasi berkemampuan CORS yang direvisi menggantikan konfigurasi perangkat saat ini.

1. Di **Langkah 1, Tentukan target**, berikan **Nama** opsional untuk mengidentifikasi penyebaran. 

1. **Pada **Langkah 2, Pilih komponen - opsional**, Anda dapat membiarkan semua pilihan saat ini apa adanya dan memilih Berikutnya.**

1. Pada **Langkah 3, Konfigurasikan komponen - opsional**, pilih **aws.iot. SiteWiseEdgeProcessor**, dan pilih **Configure component**.

1. Di bagian Pembaruan konfigurasi, di bawah Konfigurasi untuk digabungkan, masukkan JSON berikut:

   ```
   {
       "AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN": "*"
   }
   ```
**catatan**  
Menggunakan `*` sebagai nilai untuk `AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN` memungkinkan semua asal. Untuk lingkungan produksi, disarankan untuk menentukan asal yang tepat URLs untuk keamanan yang lebih baik.

1. Pilih **Konfirmasi**.

1. Pilih **Berikutnya** untuk melanjutkan melalui langkah-langkah yang tersisa sampai Anda tiba di **Step5, Review**.

1. Tinjau perubahan konfigurasi Anda, lalu pilih **Deploy** untuk menerapkan perubahan ke gateway SiteWise Edge Anda.
**catatan**  
Atau, Anda dapat mengaktifkan CORS dengan menyetel global variabel lingkungan `AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN` ke `*` AWS IoT SiteWise gateway Anda.

**catatan**  
Untuk proxy yang diautentikasi, `userinfo` harus disertakan dalam `url` bidang dalam konfigurasi proxy daripada sebagai terpisah `username` dan `password` bidang.

Setelah penerapan selesai, CORS diaktifkan di SiteWise Edge API Anda, memungkinkan asal yang ditentukan untuk membuat permintaan lintas asal ke API.

# Konfigurasikan batas waktu sesi untuk Edge AWS IoT SiteWise
<a name="edge-apis-session-timeout"></a>

SiteWise Edge memungkinkan Anda mengonfigurasi batas waktu sesi untuk SiteWise Edge API. Fitur ini meningkatkan keamanan dengan secara otomatis menghentikan sesi tidak aktif setelah jangka waktu tertentu. Bagian ini memandu Anda melalui proses mengonfigurasi batas waktu sesi menggunakan. Konsol AWS IoT SiteWise

**catatan**  
Konfigurasi batas waktu sesi tersedia untuk versi 3.4.0 dan yang lebih baru dari komponen. `aws.iot.SiteWiseEdgeProcessor` Untuk informasi selengkapnya, lihat [AWS IoT SiteWise prosesor](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-processor-component.html) di *Panduan AWS IoT Greengrass Version 2 Pengembang*.

**Untuk mengonfigurasi batas waktu sesi untuk gateway SiteWise Edge**

1. Navigasikan ke [konsol AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/) tersebut.

1. Di panel navigasi, pilih **gateway Edge**.

1. Pilih gateway SiteWise Edge tempat Anda ingin mengonfigurasi batas waktu sesi.
**catatan**  
Anda dapat mengonfigurasi batas waktu sesi pada jenis AWS IoT Greengrass V2 penerapan.

1. Di bagian **konfigurasi Gateway**, pilih perangkat inti **Greengrass** terkait.

1. Di tab **Deployment**, di bawah Perangkat Greengrass, pilih **tautan penerapan yang sesuai**.

1. Di bawah **Tindakan** pilih **Revisi**. Baca peringatan, lalu pilih **Revise deployment**.
**penting**  
Membuat konfigurasi batas waktu sesi yang direvisi menggantikan konfigurasi perangkat saat ini.

1. **Pada **Langkah 1, Tentukan target**, berikan **Nama** opsional untuk mengidentifikasi penyebaran yang direvisi, lalu pilih Berikutnya.**

1. **Pada **Langkah 2, Pilih komponen - opsional**, Anda dapat membiarkan semua pilihan saat ini apa adanya dan memilih Berikutnya.**

1. Pada **Langkah 3, Konfigurasikan komponen - opsional**, pilih **aws.iot. SiteWiseEdgeProcessor**, dan pilih **Configure component**.

1. Di bagian **Pembaruan konfigurasi**, di bawah **Konfigurasi untuk digabungkan**, masukkan JSON berikut:

   ```
   {
       "AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES": "240"
   }
   ```

1. Tetapkan nilainya `AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES` dalam hitungan menit. Nilai batas waktu sesi dapat dari 1 menit hingga 10080 menit (7 hari). Nilai default adalah 240 menit (4 jam).

1. Pilih **Konfirmasi**.

1. Pilih **Berikutnya** untuk melanjutkan melalui langkah-langkah yang tersisa sampai Anda tiba di Langkah 5, **Tinjau**.

1. Tinjau perubahan konfigurasi Anda, lalu pilih **Deploy** untuk menerapkan perubahan ke gateway SiteWise Edge Anda.

**catatan**  
Atau, Anda dapat mengonfigurasi batas waktu sesi dengan menyetel variabel lingkungan global **AWS\$1SITEWISE\$1EDGE\$1SESSION\$1TIMEOUT\$1MINUTES ke nilai yang Anda inginkan (dalam hitungan menit**) di gateway Edge Anda. SiteWise 

Setelah penerapan selesai, konfigurasi batas waktu sesi baru diterapkan ke SiteWise Edge API Anda.

# Tutorial: Daftar model aset pada gateway AWS IoT SiteWise Edge
<a name="edge-apis-tutorial"></a>

Anda dapat menggunakan subset yang tersedia AWS IoT SiteWise APIs bersama dengan edge-specific APIs 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
<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 SiteWise Persyaratan 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 OpsHub untuk AWS IoT SiteWise) [AWS IoT SiteWise Aplikasi 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 yang APIs 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 OpsHub for AWS IoT SiteWise ]

Anda dapat menggunakan AWS OpsHub untuk AWS 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 kredensyal sementara sehingga Anda dapat berjalan APIs di gateway. Anda bisa mendapatkan kredensyal ini melalui AWS OpsHub untuk AWS IoT SiteWise atau langsung dari gateway SiteWise Edge menggunakan. APIs

**penting**  
Kredensil kedaluwarsa setiap 4 jam, jadi Anda harus mendapatkan kredensialnya sebelum menggunakan gateway di APIs Edge Anda. SiteWise Jangan menyimpan kredensil selama lebih dari 4 jam.

### Dapatkan kredensyal sementara menggunakan for AWS OpsHub AWS IoT SiteWise
<a name="edge-apis-tutorial-temp-creds-opshub"></a>

**catatan**  
Anda memerlukan [AWS IoT SiteWise aplikasi 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 kredensyal**.

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). Kredensyal ini akan digunakan dalam langkah-langkah berikut untuk mendapatkan kredensyal lokal di gateway SiteWise Edge Anda yang diperlukan untuk menggunakan. AWS IoT SiteWise APIs

------
#### [ 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\$1credentials.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:])
   ```

1. Jalankan **get\$1credentials.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\$1username>dan <gateway\$1password>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\$1asset\$1model.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\$1asset\$1model.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
}
```

------