Topik ini menjelaskan cara mengakses instans target melalui HTTPS setelah proxy akses aman diaktifkan.
Prasyarat
secure access proxytelah diaktifkan untukinstance.CatatanDi Konsol DMS, navigasikan ke . Pada tab Created, lihat daftar instans yang telah mengaktifkan
secure access proxy. Jika perlu mengaktifkannya, lihat Enable the secure access proxy.Anda memiliki
authorizationuntuksecure access proxy.CatatanPada halaman detail
secure access proxy, periksa statusauthorizationuntukinstance. Jika Anda tidak memilikiauthorization, lihat Apply for secure access proxy authorization.
Pertimbangan penting
Instans secure-collaboration instance yang telah mengaktifkan secure access proxy tunduk pada aturan keamanan. Kami menyarankan agar Anda membatasi jumlah baris yang dikembalikan dalam satu kueri maksimal 3.000 baris. DMS tidak menjamin stabilitas untuk kueri yang mengembalikan lebih dari 3.000 baris.
Untuk melewati batasan
security rule, gunakanendpointyang disediakan diDMS consoleuntuk mengakses database, atau hubungi dukungan teknis DMS guna mengevaluasi kasus penggunaan spesifik Anda.Untuk
instans kolaborasi non-aman, Anda tidak dapat mengonfigurasi jumlah maksimum baris per kueri. Batas defaultnya adalah 3.000 baris.
Parameter permintaan
Parameter | Deskripsi | Wajib | Cara lulus |
accessId |
| Ya | Anda dapat mengirimkan parameter ini dengan salah satu cara berikut:
|
accessSecret |
| Ya | Anda dapat mengirimkan parameter ini dengan salah satu cara berikut:
|
schema | Nama database. | Tidak | Anda dapat mengirimkan parameter ini dengan salah satu cara berikut:
|
sql | Pernyataan SQL yang akan dieksekusi. | Ya | Anda dapat mengirimkan parameter ini dengan salah satu cara berikut:
|
Bidang respons
API mengembalikan respons dalam format JSON.
Tabel berikut menjelaskan bidang-bidang dalam objek respons JSON.
Bidang | Tipe | Deskripsi |
columnMetas | Array | Array metadata untuk setiap kolom. |
columnName | String | Nama kolom. |
columnLabel | String | Label untuk kolom, yang sesuai dengan alias yang ditentukan menggunakan klausa |
columnTypeName | String | Tipe data kolom, seperti |
precision | Integer | Presisi kolom. Misalnya, untuk kolom |
scale | Integer |
|
nullable | Boolean | Menunjukkan apakah kolom dapat berisi nilai |
autoIncrement | Boolean | Menunjukkan apakah kolom merupakan kolom auto-increment. true: Kolom auto-increment. false: Tidak. |
tableName | String | Nama tabel yang berisi kolom tersebut. |
msg | String | Pesan kesalahan yang dikembalikan jika permintaan gagal. |
updateCount | Integer | Jumlah baris yang terpengaruh oleh pernyataan DML. |
requestId | String |
|
rowCount | Integer | Jumlah catatan yang dikembalikan oleh kueri. |
rows | Array | Daftar catatan yang dikembalikan oleh kueri. Setiap elemen dalam array merepresentasikan satu baris data, mirip dengan struktur |
success | Boolean | Menunjukkan apakah permintaan berhasil. true: Permintaan berhasil. false: Permintaan gagal. |
Kode berikut menyediakan contoh respons.
Kueri data yang berhasil
{ "columnMetas": [ { "columnName":"column1", "columnLabel":"column1", "columnTypeName":"varchar", "precision":10, "scale":2, "nullable":true, "autoIncrement":true, "tableName":"table1" }, { "columnName":"column2", "columnLabel":"column2", "columnTypeName":"varchar", "precision":10, "scale":2, "nullable":true, "autoIncrement":true, "tableName":"table1" } ], "updateCount": 0, "requestId": "xhqej0xgcytbhc8scjopgqsywcaibi", "rowCount": 1, "rows": [ { "col1": 1, "col2": "xxxx" } ], "success": true }Pembaruan data yang berhasil
{ "updateCount": 0, "requestId": "xhqej0xgcytbhc8scjopgqsywcaibi", "success": true }Permintaan gagal
{ "message": "accessId is required.", "requestId": "xhqej0xgcytbhc8scjopgqsywcaibi", "success": false }
Contoh
Anda dapat menggunakan command line, SQL client, atau kode aplikasi untuk mengakses instance yang telah mengaktifkan secure access proxy.
Asumsikan bahwa endpoint adalah dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com, nama database adalah database, AccessKey ID (dikirim sebagai accessId) adalah user, AccessKey Secret (dikirim sebagai accessSecret) adalah pwd, dan pernyataan SQL adalah show databases.
Contoh perintah cURL
# Permintaan GET curl 'https://[your_endpoint]/server/[your_database_name]?accessId=[your_AccessKey_ID]&accessSecret=[your_AccessKey_Secret]&sql=[your_sql_statement]'# Contoh permintaan GET curl 'https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database?accessId=user&accessSecret=pwd&sql=SHOW%20DATABASES'# Permintaan POST curl 'https://[your_endpoint]/server/[your_database_name]' -H 'accessId:[your_AccessKey_ID]' -H 'accessSecret:[your_AccessKey_Secret]' -H 'Content-Type:text/plain' -d '[your_sql_statement]'# Contoh permintaan POST curl 'https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database' -H 'accessId:user' -H 'accessSecret:pwd' -H 'Content-Type:text/plain' -d 'SHOW DATABASES'Contoh Python
CatatanContoh ini menggunakan Python 2.
Permintaan GET:
import requests url = "https://[your_endpoint]/server/[your_database_name]?accessId=[your_AccessKey_ID]&accessSecret=[your_AccessKey_Secret]&sql=[your_sql_statement]" print requests.get(url).textContoh permintaan GET:
import requests url = "https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database?accessId=user&accessSecret=pwd&sql=SHOW DATABASES" print requests.get(url).textPermintaan POST:
import requests url = "https://[your_endpoint]/server/[your_database_name]" headers = { "Content-Type": "text/plain;charset=utf-8", "accessId": "[your_AccessKey_ID]", "accessSecret": "[your_AccessKey_Secret]" } print requests.post(url, headers=headers, data='[your_sql_statement]').textContoh permintaan POST:
import requests url = "https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database" headers = { "Content-Type": "text/plain;charset=utf-8", "accessId": "user", "accessSecret": "pwd" } print requests.post(url, headers=headers, data='SHOW DATABASES').textContoh Node.js
Permintaan GET:
const https = require("https"); https.get("https://[your_endpoint]/server/[your_database_name]?accessId=[your_AccessKey_ID]&accessSecret=[your_AccessKey_Secret]&sql=SHOW DATABASES", resp => { resp.on("data", data => { console.log(JSON.parse(data)); }); });Contoh permintaan GET:
const https = require("https"); https.get("https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database?accessId=user&accessSecret=pwd&sql=SHOW DATABASES", resp => { resp.on("data", data => { console.log(JSON.parse(data)); }); });Permintaan POST:
const https = require("https"); var req = https.request({ hostname: '[your_endpoint]', port: 443, path: '/server/[your_database_name]', method: 'POST', headers: { 'Content-Type': 'text/plain; charset=UTF-8', accessId: '[your_AccessKey_ID]', accessSecret: '[your_AccessKey_Secret]' } }, resp => { resp.on("data", data => { console.log(JSON.parse(data)); }); }); req.write("[your_sql_statement]"); req.end();Contoh permintaan POST:
const https = require("https"); var req = https.request({ hostname: 'dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com', port: 443, path: '/server/database', method: 'POST', headers: { 'Content-Type': 'text/plain; charset=UTF-8', accessId: 'user', accessSecret: 'pwd' } }, resp => { resp.on("data", data => { console.log(JSON.parse(data)); }); }); req.write("SHOW DATABASES"); req.end();Contoh Postman
Permintaan GET:

Permintaan POST:
