Este tópico descreve como acessar uma instância via HTTPS por meio do proxy de acesso seguro.
Pré-requisitos
-
O proxy de acesso seguro está ativado para a instância.
NotaVisualize as instâncias com o proxy de acesso seguro ativado na aba Created da página . Para ativar esse recurso, consulte Ativar o proxy de acesso seguro.
-
Você tem autorização para usar o proxy de acesso seguro.
NotaVerifique seu status de autorização para a instância na página de detalhes do proxy de acesso seguro. Caso não tenha autorização, consulte Solicitar autorização do proxy de acesso seguro.
Observações de uso
Regras de segurança aplicam-se a instâncias com o proxy de acesso seguro e os recursos de colaboração segura ativados. Recomendamos limitar cada consulta a no máximo 3.000 linhas. O Data Management Service (DMS) não garante estabilidade se uma consulta retornar um volume excessivo de linhas.
Para evitar restrições das regras de segurança, use o endpoint no console do DMS para acessar o banco de dados ou entre em contato com o suporte técnico do DMS para avaliar seu cenário específico.
Em instâncias sem o recurso de colaboração segura, não é possível configurar o número máximo de linhas retornadas. O limite padrão é 3.000 linhas.
Parâmetros da solicitação
|
Parâmetro |
Descrição |
Obrigatório |
Método |
|
accessId |
O AccessKey ID. |
Sim |
Envie este parâmetro de uma das seguintes formas:
|
|
accessSecret |
O AccessKey Secret. |
Sim |
Envie este parâmetro de uma das seguintes formas:
|
|
schema |
O nome do banco de dados. |
Não |
Envie este parâmetro de uma das seguintes formas:
|
|
sql |
A instrução SQL a ser executada. |
Sim |
Envie este parâmetro de uma das seguintes formas:
|
Formato da resposta
Ao acessar a instância via HTTPS, o sistema retorna a resposta no formato JSON.
O objeto JSON tem a seguinte estrutura:
|
Campo |
Tipo |
Descrição |
|
columnMetas |
Array |
Lista de metadados das colunas. |
|
columnName |
String |
Nome da coluna. |
|
columnLabel |
String |
Rótulo da coluna correspondente ao alias especificado após |
|
columnTypeName |
String |
Tipo de dados da coluna, como |
|
precision |
Integer |
Precisão para determinados tipos de dados. Por exemplo, para |
|
scale |
Integer |
Escala para tipos de dados de ponto flutuante, indicando o número de dígitos após a vírgula decimal. Por exemplo, para |
|
nullable |
Boolean |
Indica se a coluna pode conter valores nulos. |
|
autoIncrement |
Boolean |
Indica se a coluna é de incremento automático. |
|
tableName |
String |
Nome da tabela que contém a coluna. |
|
msg |
String |
Mensagem de erro retornada se a solicitação falhar. |
|
updateCount |
Integer |
Número de registros afetados por uma instrução DML (Data Manipulation Language). |
|
requestId |
String |
ID da solicitação. Use este ID para solução de problemas caso encontre algum problema. |
|
rowCount |
Integer |
Número de registros retornados por uma consulta. |
|
rows |
Array |
Lista de registros retornados por uma consulta. Cada elemento no array representa uma linha de dados, semelhante a uma estrutura |
|
success |
Boolean |
Indica se a solicitação foi bem-sucedida. |
Veja a seguir exemplos de respostas:
-
Consulta bem-sucedida
{ "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 } -
Atualização bem-sucedida
{ "updateCount": 0, "requestId": "xhqej0xgcytbhc8scjopgqsywcaibi", "success": true } -
Falha na solicitação
{ "message": 'AccessKey ID is required.', "requestId": "xhqej0xgcytbhc8scjopgqsywcaibi", "success": false }
Exemplos
Use a linha de comando, um cliente SQL ou código de aplicativo para acessar uma instância com o proxy de acesso seguro ativado.
Os exemplos a seguir utilizam estes valores: endpoint dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com, nome do banco de dados database, AccessKey ID user, AccessKey Secret pwd e comando SQL SHOW DATABASES.
-
Comando curl
# GET request curl 'https:///server/?accessId=&accessSecret=&sql='# GET request example curl 'https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database?accessId=user&accessSecret=pwd&sql=SHOW%20DATABASES'# POST request curl 'https:///server/' -H 'accessId:' -H 'accessSecret:' -H 'Content-Type:text/plain' -d ''# POST request example curl 'https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database' -H 'accessId:user' -H 'accessSecret:pwd' -H 'Content-Type:text/plain' -d 'SHOW DATABASES' -
Programa Python
NotaEste exemplo usa Python 2.
Solicitação GET:
import requests url = "https:///server/?accessId=&accessSecret=&sql=" print requests.get(url).textExemplo de solicitação GET:
import requests url = "https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/database?accessId=user&accessSecret=pwd&sql=SHOW DATABASES" print requests.get(url).textSolicitação POST:
import requests url = "https:///server/" headers = { "Content-Type": "text/plain;charset=utf-8", "accessId": "", "accessSecret": "" } print requests.post(url, headers=headers, data='').textExemplo de solicitação 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').text -
Programa Node.js
Solicitação GET:
const https = require("https"); https.get("https:///server/?accessId=&accessSecret=&sql=SHOW DATABASES", resp => { resp.on("data", data => { console.log(JSON.parse(data)); }); });Exemplo de solicitação 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)); }); });Solicitação POST:
const https = require("https"); var req = https.request({ hostname: '', port: 443, path: '/server/', method: 'POST', headers: { 'Content-Type': 'text/plain; charset=UTF-8', accessId: '', accessSecret: '' } }, resp => { resp.on("data", data => { console.log(JSON.parse(data)); }); }); req.write(""); req.end();Exemplo de solicitação 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(); -
Cliente Postman
Solicitação GET: No Postman, envie uma solicitação GET para a URL
https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/. Nos parâmetros da URL, defina accessId como seu AccessKey ID, accessSecret como seu AccessKey Secret e sql como a instrução SQL desejada, por exemplo,SHOW DATABASES. Clique em Send.Solicitação POST: No Postman, defina o método de solicitação como POST e a URL como
https://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com/server/. Na aba Headers, adicione os seguintes cabeçalhos: defina Content-Type comotext/plain, accessId como seu AccessKey ID e accessSecret como seu AccessKey Secret. Na aba Body, selecione raw, escolha Text e insira a instrução SQL, por exemplo,SHOW DATABASES, na área de texto. Clique em Send.