PrivateLink エンドポイントを作成して、仮想プライベートクラウド (VPC) からモデルまたはアプリケーション API を直接呼び出します。これにより、すべての通信が Alibaba Cloud 内部ネットワークに制限され、インターネットを経由しなくなります。
仕組み
VPC にインターフェイスエンドポイントを作成すると、PrivateLink は VPC と Alibaba Cloud Model Studio の間にプライベートな単方向接続を確立します。この接続では、VPC 内のリソースから Model Studio へのアクセスのみが許可されます。Model Studio は VPC 内のリソースにアクセスできません。
VPC 内の計算リソースがエンドポイントにアクセスすると、トラフィックは PrivateLink を介して Model Studio サービスに転送され、インターネットを経由しません。
エンドポイントは、Model Studio サービスと同じリージョンにある必要があります。別のリージョンの VPC を使用するには、「リージョン間のプライベートアクセス」をご参照ください。
Model Studio サービスリージョン:
パブリッククラウド: シンガポールおよび中国 (北京)。
PrivateLink エンドポイント経由での API アクセス
ステップ 1: インターフェイスエンドポイントの作成
パブリッククラウド
エンドポイントコンソールにログインします。
初めてエンドポイントを使用する場合は、画面の指示に従って PrivateLink を有効化してください。
[インターフェイスエンドポイント] タブで、[エンドポイントの作成] をクリックします。以下を設定し、その他はデフォルト値を使用します。
リージョン: Model Studio サービスのリージョンに基づいて、[シンガポールまたは中国 (北京)] を選択します。
エンドポイント名: カスタム名を入力します (例: modelstudio-privatelink-endpoint)。
エンドポイントタイプ: インターフェイスエンドポイント を選択します。
エンドポイントサービス: [Alibaba Cloud サービス] を選択します。表示される検索ボックスで、[com.aliyuncs.dashscope] をフィルターして選択します。

VPC: 使用する VPC を選択します。エンドポイントは VPC 内に作成されます。ECS インスタンスやコンテナーなどの VPC 内のリソースは、エンドポイントを介して Model Studio にアクセスできるようになります。
ゾーンと VSwitch: 選択した vSwitch に対応するゾーンにエンドポイント ENI (Elastic Network Interface) が作成されます。高可用性を確保するために、少なくとも 2 つの異なるゾーンで vSwitch を選択してください。あるゾーンで障害が発生した場合、トラフィックは自動的に別のゾーンの ENI に切り替えられ、サービスの中断を防ぎます。
セキュリティグループ: エンドポイント ENI に関連付けるセキュリティグループを選択します。セキュリティグループがポート 80 (HTTP) とポート 443 (HTTPS) でのインバウンドアクセスを許可していることを確認してください。
[作成] をクリックしてプロセスを完了します。
ステップ 2: ドメイン名の取得
パブリッククラウド
インターフェイスエンドポイントを作成した後、インターフェイスエンドポイントの詳細ページからサービスドメイン名を取得します。
[デフォルトドメイン名] は HTTP プロトコルのみをサポートします。[カスタムドメイン名] は HTTP と HTTPS の両方をサポートします。

ステップ 3: アクセスの検証
Model Studio の base_url 内のドメイン名を、前のステップで取得したドmain名に置き換えます。その後、対応する VPC から呼び出しを行います。
パブリッククラウド
次の例は、OpenAI 互換モードでシンガポールリージョンの Qwen テキストモデル を呼び出す方法を示しています。
置き換え前:
https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions置き換え後:
デフォルトのサービスドメイン名:
<u>http://ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com</u>/compatible-mode/v1/chat/completionsカスタムサービスドメイン名:
https://<u>vpc-ap-southeast-1.dashscope.aliyuncs.com</u>/compatible-mode/v1/chat/completions
呼び出し例:
HTTP
# 元のドメイン名を、前のステップで取得したドメイン名に置き換えます。
curl -X POST http://ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-flash",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Who are you?"
}
]
}'OpenAI Python SDK
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 元のドメイン名を、前のステップで取得したドメイン名に置き換えます。
base_url="http://ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-flash",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Who are you?'}],
)
print(completion.model_dump_json())
DashScope Python SDK
import os
from http import HTTPStatus
# DashScope SDK V1.14.0 以降の使用を推奨します。
import dashscope
from dashscope import Generation
# 元のドメイン名を、前のステップで取得したドメイン名に置き換えます。
dashscope.base_http_api_url = "http://ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com/api/v1"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
messages = [{
'role': 'user', 'content': 'Who are you?'
}]
response = Generation.call(
model="qwen-flash",
messages=messages,
result_format='message'
)
if response.status_code == HTTPStatus.OK:
print(response)
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
DashScope Java SDK
// DashScope SDK V2.12.0 以降の使用を推奨します。
import java.util.Arrays;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.utils.JsonUtils;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
// 元のドメイン名を、前のステップで取得したドメイン名に置き換えます。
Generation gen = new Generation(Protocol.HTTP.getValue(), "http://ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com/api/v1");
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("You are a helpful assistant.")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("Who are you?")
.build();
GenerationParam param = GenerationParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-flash")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println(JsonUtils.toJson(result));
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// エラーメッセージを出力します。
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
}
}呼び出しを行う前に、「API キーを作成してエクスポート」してください。API キーを直接渡すには、$DASHSCOPE_API_KEY をご自身の API キーに置き換えてください。リージョン間のプライベートアクセス
上記の手順では、同じリージョン内のエンドポイントから Model Studio にアクセスしました。しかし、VPC が別のリージョンにある場合は、次の手順を実行してください。
前のセクションに従って、PrivateLink エンドポイントを作成します。
Cloud Enterprise Network (CEN) を使用して、異なるリージョンの VPC を接続します。次の点に注意してください。
CIDR ブロックの競合による障害を防ぐために、CIDR ブロックが重複しない VPC を選択してください。
中国本土と海外リージョン間で VPC を接続するには、アカウントが企業 ID 検証に合格する必要があります。
PrivateLink エンドポイントに関連付けられているセキュリティグループで、リクエスト元 VPC からのポート 80 および 443 でのトラフィックを許可するインバウンドルールを追加します。
設定が完了すると、リクエスト元 VPC からエンドポイントのデフォルトサービスドメイン名にアクセスしたときに、トランジットルーター (TR) がトラフィックを Model Studio サービスリージョン内のエンドポイントにルーティングします。
デフォルトでは、デフォルトドメイン名はリージョンをまたいで相互接続された VPC から直接アクセスできます。ただし、カスタムサービスドメイン名は同じリージョン内の VPC でのみ有効です。カスタムドメイン名を使用するには、カスタムドメイン名と同じ権威ゾーンを作成し、CNAME レコードを使用してデフォルトドメイン名に解決します。
カスタムドメイン名と同じ権威ゾーンを追加します (例:
vpc-ap-southeast-1.dashscope.aliyuncs.com)。[有効範囲] セクションで、リクエスト元 VPC を選択します。DNS レコードを追加するには、[レコードタイプ] を [CNAME] に、[ホスト名] を
@に、[レコード値] をデフォルトドメイン名に設定します。例:<u>ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com</u>。
設定が完了すると、カスタムドメイン名を使用してリクエスト元 VPC から Model Studio API にアクセスできます。
課金
PrivateLink、CEN、および Private Zone を使用すると、追加料金が発生する場合があります。
よくある質問
ECS インスタンスが PrivateLink を使用して Model Studio API にアクセスできないのはなぜですか?
次の手順に従ってトラブルシューティングを行ってください。
ECS インスタンスとエンドポイントが同じ VPC 内にあることを確認します。
ECS インスタンスとエンドポイントが異なる VPC にある場合は、まずVPC を接続します。
エンドポイントに関連付けられているセキュリティグループを確認します。ソース ECS インスタンスの CIDR ブロックからのポート 80 (HTTP) または 443 (HTTPS) でのトラフィックを許可するインバウンドルールが追加されていることを確認します。
ドメイン名を確認します。
デフォルトのドメイン名は HTTP のみをサポートします。
エンドポイントはインターネットからアクセスできますか?
いいえ。PrivateLink は、Alibaba Cloud 内部ネットワーク内にプライベート接続を確立するためにのみ使用されます。エンドポイントはインターネットにアクセスできず、エンドポイント ENI を Elastic IP アドレス (EIP) に関連付けることはできません。