全部產品
Search
文件中心

DataWorks:調用API

更新時間:May 12, 2026

API 發布至 API Gateway後,調用方需持有經授權的應用(App)憑據才能訪問。本文介紹從 API 發布到成功調用的完整準備:建立應用、建立授權、認證方式、擷取憑據及通過 SDK 發起調用。

調用前提:三要素缺一不可

在調用任何資料服務 API 之前,您需要確保以下三個條件全部滿足:

前提條件

說明

負責角色

API 發行

API 必須已通過審批並成功發布至 API Gateway,產生線上調用地址。詳情請參見發布API

API 開發人員

應用(App)已建立

調用者需要在 API Gateway中擁有一個應用,作為調用 API 時的身份標識。

API 呼叫者

授權關係已建立

應用(App)必須獲得目標 API 的調用授權,否則即使持有正確憑據也會被拒絕訪問。詳情請參見API Gateway授權

API 開發人員/管理員

三者的關係可以理解為:API 是“門”,App 是“身份證”,授權是“通行證”。只有同時出示合法的身份證和對應的通行證,才能通過這扇門。

建立應用(App 身份)

應用(App)是您調用 API 時的身份憑證載體。每個 App 擁有一組獨立的認證資訊(AppKey、AppSecret、AppCode),相當於該身份的“帳號和密碼”。

自動建立的預設應用

當您在 DataWorks 中首次發布 API 時,系統會自動在 API Gateway中建立一個與工作空間同名的應用(App),並將該工作空間下的所有 API 自動授權給這個預設應用。這意味著:

  • 同一工作空間內的成員,可以直接使用預設 App 的憑據調用本空間下的 API,無需額外授權。

  • 預設應用的認證資訊可在資料服務控制台的API調用頁面查看。

手動建立應用

如果需要對不同的調用方進行流量隔離或許可權區分,您可以在 API Gateway控制台中手動建立新的應用:

  1. 登入API Gateway控制台

  2. 在左側導覽列,選擇應用管理

  3. 單擊建立應用,輸入應用程式名稱和描述。

  4. 建立成功後,系統會為該應用產生一組 AppKey、AppSecret 和 AppCode。

說明

為不同的調用情境(如內部系統、第三方夥伴、資料看板等)分別建立獨立的 App,便於後續進行流量監控、限流量控制和許可權管理。

授權流程

授權是指將某個 API 的調用許可權授予指定的應用(App)。只有建立了授權關係的 App,才能使用其憑據成功調用對應的 API。

授權給其他帳號

當您需要將 API 開放給其他阿里雲帳號下的工作空間調用時,需要進行跨帳號授權:

  1. 登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料分析與服務 > 資料服務,在下拉框中選擇對應工作空間後單擊進入資料服務

  2. 進入資料服務頁面,單擊頂部功能表列的服務管理,進入API 管理頁面。

  3. 發佈的API頁簽下,找到目標 API,單擊其後的授權

  4. API 授權對話方塊中,配置以下參數:

    API授權

    參數

    說明

    API名稱

    待授權的 API 名稱,預設不可修改。

    要授權的雲帳號 ID

    需要獲得該 API 呼叫許可權的阿里雲帳號 ID。您可以在頁面查看帳號 ID。

    要授權的工作空間

    選擇目標阿里雲帳號下的工作空間名稱。

    授權有效期

    選擇授權的有效期間限(詳見下文)。

  5. 單擊確認,完成授權。

授權有效期間

授權有效期間決定了被授權方可以調用 API 的時間範圍:

有效期間類型

說明

適用情境

短期

需要選擇一個到期日,在該日期前有權調用 API。到期後授權自動失效。

臨時性資料共用、限時合作專案、試用情境。

長期

永久有權調用 API,除非手動撤銷授權。

長期穩定的系統整合、內部服務間調用。

說明

如果已授權的 API 被下線或刪除,被授權方將無法繼續調用該 API。如果已授權的 API 被下線後重新發布(或修改後重新發布),需要 API 負責人對新版本重新授權。

查看已授權與被授權的 API

API 管理頁面,您可以從兩個維度查看授權狀態:

查看獲得授權的 API(我被授權了哪些 API)

單擊獲得授權的API頁簽,查看所有其他帳號授權給您的 API 列表。在此頁面您可以:

  • 單擊測試,線上測試獲得授權的 API。詳情請參見測試API

  • 單擊刪除,主動放棄某個 API 的調用授權。

查看授權給他人的 API(我授權了哪些 API 給別人)

單擊授權給他人的API頁簽,查看您授權給其他工作空間的 API 列表。在此頁面您可以:

  • 單擊測試,線上測試已授權的 API。

  • 單擊授權管理,取消或修改對特定工作空間的授權。

三種授權情境

根據團隊規模和安全管理需求的不同,API 授權的粒度也有所差異。以下三種情境覆蓋了最常見的授權方案。

情境一:同一工作空間,共用一個 App

情境一

情境描述:同一個 DataWorks 工作空間下的所有成員,共同使用工作空間預設建立的同一個應用(App)來調用 API。

適用情況:團隊規模較小、成員之間信任度高;不需要區分不同成員的調用流量來源;快速啟動,最簡配置。

工作方式:DataWorks 在 API 發布時自動建立與工作空間同名的 App,並自動將工作空間內的所有 API 授權給該 App。工作空間內的所有成員共用這組 AppKey、AppSecret 和 AppCode。

優勢:零配置,開箱即用。劣勢:無法區分具體是哪個成員發起的調用;如果某個成員的憑據泄露,影響範圍為整個工作空間。

情境二:每個 RAM 使用者使用獨立的 App

情境二

情境描述:企業內的每個 RAM 使用者(子帳號),各自在 API Gateway中建立獨立的應用(App),分別獲得 API 的調用授權。

適用情況:需要精確追蹤每個使用者的 API 呼叫行為;需要對不同使用者佈建不同的限流策略;安全合規要求較高,需要做到“一人一憑據”。

工作方式:每個 RAM 使用者登入 API Gateway控制台各自建立自己的 App;API 管理員將 API 分別授權給每個使用者的 App;每個使用者使用自己 App 的憑據調用 API。

優勢:調用行為可追溯到個人,安全隔離性強,憑據泄露影響範圍最小。劣勢:管理開銷較大,每新增一個使用者都需要建立 App 和配置授權。

情境三:多個 RAM 使用者分組,每組共用一個 App

情境三

情境描述:將多個 RAM 使用者按業務職能或團隊劃分為若干組,每群組成員共同使用同一個應用(App)來調用 API。

適用情況:團隊規模較大,按部門或專案組劃分;需要區分不同業務線的調用流量,但不需要精確到個人;在管理成本與安全性之間取得平衡。

工作方式:按業務組建立對應數量的 App;API 管理員將 API 授權給各業務組的 App;組內成員共用本組 App 的憑據。

優勢:管理粒度適中,既能區分業務來源又不會產生過多管理開銷。劣勢:組內成員之間無法進一步區分。

情境選型建議

維度

情境一(共用 App)

情境二(獨立 App)

情境三(分組 App)

管理複雜度

安全隔離度

流量追蹤粒度

工作空間級

使用者級

業務組級

憑據泄露影響

整個工作空間

僅限個人

僅限業務組

推薦團隊規模

5 人以下

不限

10 人以上

三類憑據辨析:避免混淆

資料服務涉及三類完全不同的認證憑據,用途、來源和使用情境完全不同,請務必區分:

憑據類型

用途

來源

使用情境

API 呼叫憑據(AppKey/AppSecret/AppCode)

調用方調用發行的 API 時證明身份

API Gateway > 應用管理

用戶端代碼中調用資料服務 API

資料來源串連憑據(AccessKey ID/AccessKey Secret)

資料服務串連後端資料來源時的身份認證

阿里雲 RAM > AccessKey 管理

資料來源配置頁面填寫,用於資料服務串連您的資料庫

DataWorks 平台許可權(RAM 使用者/角色)

控制誰能在 DataWorks 控制台中操作 API

阿里雲 RAM > 使用者/角色管理

登入 DataWorks、建立/發布/管理 API

一句話記憶:AccessKey 管“連資料來源”,AppKey 管“調 API”,RAM 管“進控制台”。三者各司其職,互不替代。

混淆一:“API 呼叫報 403,但我有 RAM 管理員權限” — RAM 許可權控制的是 DataWorks 控制台操作許可權,而不是 API 呼叫許可權。API 呼叫許可權由 App 授權控制。即使您是 RAM 管理員,調用 API 時仍然需要一個已被授權的 App 的 AppKey/AppSecret。

混淆二:“資料來源配置的 AccessKey 和 API 呼叫的 AppKey 是同一個嗎?” — 不是。AccessKey 用於資料服務後台串連資料來源;AppKey 用於調用方調用 API。兩者完全獨立。

混淆三:授權頁面的“雲帳號 ID”填什嗎? — 授權頁面要求填寫的是阿里雲帳號 ID(純數字),而非 RAM 使用者名稱或登入郵箱。擷取方式:登入帳號管理頁面,在安全設定中查看帳號 ID。

認證方式對比

API Gateway支援兩種身份認證方式。資料服務預設會為工作空間下的 API 添加“阿里雲 APP 認證”,調用方可以根據安全需求選擇具體的認證方式。

簡單認證(AppCode)

調用者僅需在 HTTP 要求的 Header 中添加 AppCode 即可完成身份認證,無需進行簽名計算。

請求樣本

GET /api/v1/users?name=test HTTP/1.1
Host: your-api-endpoint.cn-shanghai.alicloudapi.com
Authorization: APPCODE 3f963a8e1cd7492bbd8a5e2e5e4c****

簽名認證(AppKey + AppSecret)

調用者需要使用 AppSecret 對請求內容進行 HMAC-SHA256 簽名計算,將 AppKey 和簽名值添加到請求 Header 中。API Gateway收到請求後使用相同的 AppSecret 重新計算簽名,對比簽名是否一致來驗證調用者身份。

請求樣本(Header 部分):

X-Ca-Key: 12345678
X-Ca-Signature: BASE64_ENCODED_SIGNATURE
X-Ca-Timestamp: 1741593600000
X-Ca-Nonce: unique-uuid-string
X-Ca-Signature-Headers: X-Ca-Key,X-Ca-Nonce,X-Ca-Timestamp

兩種方式對比

對比項

簡單認證(AppCode)

簽名認證(AppKey + AppSecret)

安全層級

較低

實現複雜度

極低(僅一行 Header)

中等(需實現簽名演算法)

防重放攻擊

不支援

支援(基於時間戳記和 Nonce)

防篡改

不支援

支援(請求內容參與簽名)

適用情境

內部系統調試、資料看板、快速原型驗證

生產環境、對外開放 API、安全合規要求高的情境

傳輸要求

強烈建議配合 HTTPS 使用

即使 HTTP 也有一定安全性,但仍建議使用 HTTPS

說明

選型建議:

  • 開發測試階段:使用 AppCode 方式快速驗證 API 功能,降低開發成本。

  • 生產環境:務必使用 AppKey + AppSecret 簽名認證,並配合 HTTPS 傳輸加密。

  • 對外開放 API:必須使用簽名認證,防止憑據在傳輸過程中被截獲後遭到重放攻擊。

簽名演算法詳解

簽名認證基於 HMAC-SHA256 演算法,核心流程如下:

簽名流程概覽

  1. 構造正常化請求字串(StringToSign):將 HTTP 方法(GET/POST)、Accept Header、Content-MD5(請求 Body 的 MD5 值)、Content-Type、Date、參與簽名的自訂 Header(X-Ca-*,按字母序排列)以及正常化 URL(路徑 + 排序後的查詢參數)依次拼接。

  2. 使用 HMAC-SHA256 計算簽名Signature = Base64(HMAC-SHA256(AppSecret, StringToSign))

  3. 將簽名資訊添加至請求 Header:包括 X-Ca-Key(AppKey)、X-Ca-Signature(簽名值)、X-Ca-Timestamp(毫秒級時間戳記)、X-Ca-Nonce(UUID,防重放)和 X-Ca-Signature-Headers(參與簽名的 Header 列表)。

關鍵注意事項

在實現簽名演算法時,以下細節容易出錯:

  • 參數排序:URL 查詢參數和簽名 Header 必須按 Key 的字母序(ASCII 碼序)排列。

  • URL 編碼:參數值中的特殊字元(空格、中文等)需要進行 URL 編碼。

  • 分行符號:StringToSign 中各行之間使用 \n(LF)分隔,不能使用 \r\n(CRLF)。

  • 空值處理:無 Body 時 Content-MD5 為空白字串(不是 null),Accept 等 Header 不存在時也用Null 字元串。

  • 時間戳記精度X-Ca-Timestamp 為毫秒級時間戳記,用戶端與伺服器時間偏差不能超過 15 分鐘。

  • Nonce 唯一性:每次請求必鬚生成唯一的 UUID 作為 X-Ca-Nonce,重複使用會觸發重放攻擊攔截。

說明

包括 Java 和 Python 的完整程式碼範例、StringToSign 的詳細拼接規則以及常見簽名錯誤的調試方法,請參見 API Gateway文檔中的簽名演算法章節。

查看認證憑據

在成功建立應用並獲得授權後,您需要擷取 AppKey、AppSecret 或 AppCode 來進行 API 呼叫。資料服務提供了便捷的憑據查看入口。

通過資料服務控制台查看

  1. 登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料分析與服務 > 資料服務,在下拉框中選擇對應工作空間後單擊進入資料服務

  2. 在資料服務頁面,單擊頁面頂部功能表列的服務管理

  3. 在左側導覽列,單擊API調用

  4. API調用頁面,您可以查看和複製以下認證資訊:AppKey(應用唯一標識)、AppSecret(用於簽名認證,請妥善保管)、AppCode(用於簡單認證)。

通過 API Gateway控制台查看:登入 API Gateway控制台,在應用管理中找到目標應用,進入詳情頁查看 AppKey、AppSecret 和 AppCode。

重要

AppSecret 和 AppCode 是敏感資訊,請勿在代碼倉庫、日誌、前端頁面等公開位置暴露。如懷疑憑據泄露,請立即在 API Gateway控制台中重設 AppSecret。

通過 API Gateway SDK 調用

API Gateway提供了主流程式設計語言的 SDK,協助您快速整合 API 呼叫。SDK 已內建簽名演算法的實現,您無需手動計算簽名,只需提供 AppKey 和 AppSecret 即可。詳情請參見調用 API 文檔SDK 下載與使用

支援的 SDK 語言

語言

SDK 說明

Java

支援 Maven 依賴引入,提供同步和非同步呼叫方式。

Python

支援 pip 安裝,相容 Python 2.7 和 3.x。

Node.js

支援 npm 安裝。

PHP

支援 Composer 安裝。

C#

支援 NuGet 包管理。

Go

支援 go get 安裝。

使用 SDK 的優勢

相比手動構造 HTTP 要求,使用 SDK 調用有以下優勢:

  • 自動簽名:SDK 內部實現了 HMAC-SHA256 簽名演算法,開發人員無需關心簽名細節。

  • 自動重試:部分 SDK 內建了網路異常重試機制。

  • 參數校正:SDK 會在發送請求前進行基本的參數合法性校正。

  • 效能最佳化:SDK 通常使用串連池和 HTTP/2 等技術最佳化網路效能。

快速整合樣本(Java)

以下樣本展示如何使用 API Gateway Java SDK 調用資料服務 API:

// 1. 添加 Maven 依賴
// <dependency>
//     <groupId>com.aliyun.api.gateway</groupId>
//     <artifactId>sdk-core-java</artifactId>
//     <version>最新版本</version>
// </dependency>

// 2. 初始化用戶端
HttpClientBuilderParams params = new HttpClientBuilderParams();
params.setAppKey("your_app_key");
params.setAppSecret("your_app_secret");

ApacheHttpClient client = new ApacheHttpClient(params);

// 3. 構造請求
IoTApiRequest request = new IoTApiRequest();
request.setDomain("your-api-endpoint.cn-shanghai.alicloudapi.com");
request.setPath("/api/v1/query");
request.setHttpMethod("GET");
request.putQueryParam("pageSize", "10");
request.putQueryParam("pageNum", "1");

// 4. 發起調用
ApiResponse response = client.execute(request);
System.out.println("Response: " + response.getBody());

快速整合樣本(Python)

# 1. 安裝 SDK
# pip install aliyun-api-gateway-sdk

# 2. 調用 API
from com.alibaba.cloudapi.sdk.client import DefaultClient
from com.alibaba.cloudapi.sdk.model import HttpClientBuilderParams

params = HttpClientBuilderParams()
params.app_key = "your_app_key"
params.app_secret = "your_app_secret"
params.host = "your-api-endpoint.cn-shanghai.alicloudapi.com"

client = DefaultClient(params)
response = client.get(
    path="/api/v1/query",
    query_params={"pageSize": "10", "pageNum": "1"},
    headers={"Accept": "application/json"}
)

print(f"Status: {response.status_code}")
print(f"Body: {response.content}")
說明

各語言 SDK 的詳細使用說明、API 參考和範例程式碼,請參見 API Gateway官方文檔中的SDK 下載與使用章節。

完整調用流程總結

從 API 發布到成功調用的完整流程:API 開發人員開發並測試 API、發布 API 至 API Gateway(自動建立預設 App 和授權);如需跨帳號共用則手動授權給目標帳號。API 呼叫者建立 App(或使用預設 App)、擷取認證憑據(AppKey/AppSecret/AppCode)、選擇認證方式(簡單認證使用 AppCode,簽名認證使用 AppKey+AppSecret),最後通過 SDK 或 HTTP 調用 API。API Gateway驗證身份後,資料服務執行查詢並返回結果。