如果您希望在生產環境中通過固定網域名稱訪問雲沙箱,或者希望使用自有認證訪問沙箱中的 Web 服務,可以為雲沙箱綁定自訂網域名。
自訂網域名是雲沙箱的 FC Extensions(雲上擴充)能力,是 E2B 之外的擴充能力,不屬於 E2B SDK 原生相容介面。
綁定自訂網域名後,您可以使用:
-
控制鏈路網域名稱:訪問雲沙箱 API,例如
https://api.example.com。 -
資料鏈路網域名稱:訪問沙箱內服務,例如
https://{port}-{sandboxId}.example.com。
以 example.com 為例:
|
用途 |
樣本 |
說明 |
|
控制鏈路網域名稱 |
|
用於建立、查詢、刪除雲沙箱等 API 請求。 |
|
資料鏈路網域名稱 |
|
用於訪問沙箱內指定連接埠的服務。 |
|
SDK |
|
SDK 訪問雲沙箱 API 的地址。 |
|
SDK |
|
SDK 拼接沙箱服務訪問地址時使用的基礎網域名稱。 |
使用限制
-
為雲沙箱綁定自訂網域名時,必須選擇雲沙箱所在的地區。
-
當前控制鏈路網域名稱僅支援
api.開頭的單網域名稱,例如api.example.com。 -
資料鏈路網域名稱為控制鏈路網域名稱去掉
api.首碼後的泛網域名稱,例如*.example.com。 -
必須使用 HTTPS 協議。
-
必須上傳可覆蓋資料鏈路泛網域名稱的認證,例如
*.example.com。僅覆蓋api.example.com的單網域名稱認證不滿足要求。 -
私密金鑰必須為未加密的 RSA PEM 格式。如果您的私密金鑰是
-----BEGIN PRIVATE KEY-----格式,可先轉換為-----BEGIN RSA PRIVATE KEY-----格式。 -
不支援中文網域名稱。
-
同一個主帳號預設最多可綁定 5 個雲沙箱自訂網域名。如需提高上限,請聯絡服務技術服務人員。
-
自訂網域名需要完成備案或接入備案,具體要求以控制台校正結果為準。
私密金鑰格式轉換樣本:
openssl rsa -in pkcs8.key -out pkcs1.key
1. 添加自訂網域名
-
在左側導覽列選擇 。
-
選擇雲沙箱所在地區。
-
單擊 添加自定义域名。
-
在 添加自定义域名 頁面填寫控制鏈路網域名稱,例如
api.example.com。 -
按頁面提示擷取控制鏈路 CNAME 和資料鏈路 CNAME,用於下一步佈建網域名解析。
重要:自訂網域名必須選擇與雲沙箱相同的地區,否則網域名稱解析和認證校正可能無法生效。
2. 佈建網域名解析
登入雲解析 DNS 控制台,將自訂網域名解析到雲沙箱提供的 CNAME。
|
CNAME 類型 |
主機記錄 |
記錄類型 |
記錄值樣本 |
|
控制鏈路 CNAME |
|
CNAME |
|
|
資料鏈路 CNAME |
|
CNAME |
|
樣本:如果您的主帳號 ID 為 119085698835****,雲沙箱所在地區為華北 2(北京),資料鏈路 CNAME 可配置為:
119085698835****.cn-beijing.e2b.fc.aliyuncs.com
配置完成後,建議等待 DNS 生效再提交或驗證。您可以使用以下命令檢查解析結果:
dig +short CNAME api.example.com
dig +short CNAME test.example.com
其中 test.example.com 用於驗證 *.example.com 泛網域名稱解析是否生效。
3. 配置 HTTPS 認證
雲沙箱自訂網域名強制使用 HTTPS。請在添加網域名稱時上傳認證和私密金鑰。
|
配置項 |
說明 |
|
認證名稱 |
用於標識本次上傳的認證。 |
|
PEM 認證內容 |
填寫完整憑證鏈結,需包含 |
|
PEM 認證密鑰 |
填寫未加密的 RSA 私密金鑰,需包含 |
|
TLS 協議版本 |
建議選擇 TLS 1.2 或更高版本。 |
認證要求:
-
認證必須在有效期間內。
-
認證和私密金鑰必須匹配。
-
認證必須覆蓋資料鏈路泛網域名稱。例如控制鏈路網域名稱為
api.example.com時,認證應覆蓋*.example.com。
4. 在 SDK 中使用自訂網域名
網域名稱添加成功後,將 SDK 中的 API 地址和資料鏈路基礎網域名稱替換為您綁定的自訂網域名。
TypeScript 樣本:
import { Sandbox } from "e2b";
const sandbox = await Sandbox.create("code-interpreter-v1", {
apiKey: process.env.E2B_API_KEY,
apiUrl: "https://api.example.com",
domain: "example.com",
});
const host = sandbox.getHost(8000);
console.log(`https://${host}`);
Python 樣本:
from e2b import Sandbox
sandbox = Sandbox.create(
template="code-interpreter-v1",
api_key=os.environ["E2B_API_KEY"],
api_url="https://api.example.com",
domain="example.com",
)
host = sandbox.get_host(8000)
print(f"https://{host}")
如果沙箱 ID 為 sandbox-id,訪問連接埠為 8000,SDK 返回的訪問地址形如:
https://8000-sandbox-id.example.com
5. 驗證自訂網域名
完成配置後,可按以下步驟驗證:
-
使用 SDK 或 OpenAPI 建立一個雲沙箱。
-
在沙箱中啟動一個 HTTP 服務,例如監聽
8000連接埠。 -
調用
sandbox.getHost(8000)擷取訪問網域名稱。 -
使用瀏覽器或
curl訪問https://{port}-{sandboxId}.example.com。
樣本:
curl -v https://8000-sandbox-id.example.com
如果返回沙箱內服務響應,說明資料鏈路網域名稱已生效。
常見問題
|
問題 |
可能原因 |
處理方式 |
|
添加網域名稱時提示 CNAME 校正失敗 |
DNS 未配置、記錄值錯誤,或解析尚未生效 |
檢查控制鏈路 CNAME 是否指向控制台提示的目標地址,等待 DNS 生效後重試。 |
|
HTTPS 訪問時認證不匹配 |
認證未覆蓋資料鏈路泛網域名稱 |
上傳覆蓋 |
|
提示私密金鑰格式錯誤 |
私密金鑰不是未加密 RSA PEM 格式 |
使用 |
|
SDK 仍返回預設訪問網域名稱 |
SDK 未配置 |
將 |
|
資料鏈路地址無法訪問 |
泛網域名稱 CNAME 未生效,或沙箱內服務未監聽對應連接埠 |
檢查 |
|
達到網域名稱數量上限 |
當前主帳號已綁定多個自訂網域名 |
刪除不再使用的網域名稱,或聯絡服務技術服務人員提高上限。 |
注意事項
-
sandbox.getHost(port)返回的是 host,訪問時通常需要拼接https://。 -
自訂網域名適合生產或長期訪問情境;臨時調試也可以繼續使用雲沙箱預設訪問網域名稱。
-
不要在未鑒權的連接埠服務中暴露敏感性資料、內部調試介面或長期有效憑證。