適用於通過MaxCompute自訂函數(UDF)、Spark、MR、PyODPS/Mars訪問處於公網中的目標IP或網域名稱的情境。
適用範圍
支援的頂層網域:aliyuncs.com、aliyun.com、amap.com、dingtalk.com、alicloudapi.com、cainiao.com、alicdn.com、taobao.com、alibaba.com、alipaydev.com、alibabadns.com。
不支援配置IPv6地址,公網IP數量無限制。
如果遇到某外部網路地址無法通過自動校正的問題,則需要刪除該地址後重新提交。如仍有需要,可以通過提交工單,申請配置外部網路地址。具體操作請參見網路開通流程。
操作步驟
步驟一:帳號及專案準備
開通MaxCompute與目標服務間的網路連接前,需要確認以下兩個條件。
建立MaxCompute專案。在湖倉一體情境中,建議設定MaxCompute專案的資料類型為Hive相容類型。
如果需要訪問位於VPC網路中的目標服務,請確保VPC所有者帳號、訪問MaxCompute專案的阿里雲帳號,以及目標服務環境或叢集的管理員帳號是同一個主帳號或同在一個主帳號下。
步驟二:通過專案管理編輯外部網路地址
對於常用的公網IP或網域名稱(如aliyun.com),可以直接通過MaxCompute控制台的專案管理添加與刪除:
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇。
在项目管理頁面,單擊目標專案操作列的管理。
在项目配置頁面,選擇参数配置頁簽。
在MaxCompute外部网络地區,單擊编辑。
設定可用的MaxCompute外部網路地址。
單擊提交。
步驟三:訪問公網地址
使用SQL自訂函數(UDF)、Spark或MaxFrame任務訪問公網時,需要添加以下配置。
其他類型的任務,請根據相應的任務類型調整配置資訊。
SQL自訂函數(UDF)任務
參數設定如下:
--設定網路連接申請表單中配置的公網IP或網域名稱、連接埠。即下方SQL語句要訪問的公網IP或網域名稱。 --如果需要訪問多個網域名稱或連接埠,請使用英文逗號(,)分隔 SET odps.internet.access.list=<ip_address:port|realm_name:port>; --執行SQL語句調用UDF。 SELECT <UDF_name>("<http://ip_address|realm_name>");ip_address:port | realm_name:port:必填。目標公網IP或網域名稱、連接埠。
UDF_name:訪問公網IP或網域名稱的UDF。
任務範例程式碼如下:
package com.aliyun.odps.test.udf; import com.aliyun.odps.udf.UDF; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class <UDF_name> extends UDF { public String evaluate(String urlStr) throws IOException { URL url = new URL(urlStr); StringBuilder sb = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) { String line; while ((line = reader.readLine()) != null) { sb.append(line).append('\n'); } } return sb.toString(); } }執行:基於UDF範例程式碼建立的自訂函數名稱為
url_fetch,網路連接審核通過後,執行命令樣本如下。SET odps.internet.access.list=www.aliyun.com:80; SELECT url_fetch("http://www.aliyun.com");
Spark on MaxCompute任務
參數設定:此配置項需加在Spark用戶端的conf檔案中或DataWorks提交Spark作業時的配置項中。
spark.hadoop.odps.cupid.smartnat.enable = true;
spark.hadoop.odps.cupid.internet.access.list=<ip_address:port>MaxFrame任務
參數設定如下:
from maxframe import options
options.sql.settings = {
"odps.internet.access.list": "<host>:80,<host>:443",
}(可選)步驟四:添加白名單
如果使用者服務端有存取控制,需要將MaxCompute訪問公網方案的出口IP添加到使用者服務白名單。無法通過自動校正的公網IP或網域名稱需要按照如下步驟操作:
提交工單申請配置公網的IP或網域名稱、連接埠的白名單。
MaxCompute支援人員團隊接收到提交的申請資訊後,會進行審核並完成配置。確認處理完畢後(通常處理周期為3個工作日),即可繼續執行後續步驟。若對審核結果有異議,可再次通過工單與我們溝通。