VPC (Virtual Private Cloud) からパブリックインターネットにトラフィックを公開せずに Model Studio API を呼び出すには、プライベートエンドポイントを作成します。これにより、すべての通信が Alibaba Cloud の内部ネットワーク内に限定されます。
仕組み
VPC にインターフェイスエンドポイントを作成すると、PrivateLink はご利用の VPC と Model Studio の間にプライベートエンドポイント接続を確立します。この接続は一方向です。つまり、VPC 内のリソースは Model Studio にアクセスできますが、Model Studio はこの接続を使用して VPC 内のリソースにアクセスすることはできません。
ご利用の VPC 内のコンピューティングリソースがエンドポイントにアクセスすると、トラフィックは PrivateLink を経由して Model Studio サービスにルーティングされ、パブリックインターネットをバイパスします。
別のリージョンの VPC からプライベートにサービスにアクセスするには、「リージョン間のプライベートアクセス」をご参照ください。
Model Studio は、以下のリージョンで利用できます:
-
パブリッククラウド:シンガポールおよび中国 (北京)。
現在、米国 (バージニア) リージョンではプライベートネットワークアクセスはサポートされていません。
エンドポイント経由での API アクセス
ステップ 1:インターフェイスエンドポイントの作成
パブリッククラウド
-
エンドポイントコンソールにログインします。
初めてエンドポイントを使用する場合は、画面の指示に従って PrivateLink サービスを有効化してください。
-
[インターフェイスエンドポイント] タブで、[エンドポイントの作成] をクリックし、以下のパラメーターを設定します。その他のパラメーターはデフォルト値のままでかまいません。
-
Region:ご利用の Model Studio サービスのリージョンに基づいて、「シンガポール」または「中国 (北京)」を選択します。
-
ノード名:カスタム名を入力します。例:
Model Studio PrivateLink endpoint。 -
エンドポイントタイプ:[インターフェイスエンドポイント] を選択します。
-
エンドポイントサービス:[Alibaba Cloud サービス] を選択し、com.aliyuncs.dashscope を検索して選択します。

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

ステップ 3:接続の確認
Model Studio API リクエストの base_url のドメイン名を、前のステップで取得したエンドポイントサービスドメイン名に置き換えます。その後、対応する VPC から API 呼び出しを行います。
パブリッククラウド
例えば、シンガポールリージョンで OpenAI 互換モードで Qwen テキストモデルを呼び出す場合:
-
置換前:
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completionsまたは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 からプライベートネットワーク経由で Model Studio API にアクセスするには、接続範囲に応じて次のいずれかの方法を選択します:
-
中国本土内または中国本土外のリージョン間 (例:日本 (東京) の VPC からシンガポールの Model Studio にアクセス):方法 1:クロスリージョンエンドポイントの有効化 (推奨) を使用します。
-
リージョン間の国境越え (中国本土とその他のリージョン間、例:シンガポールの VPC から中国 (北京) の Model Studio にアクセス):方法 2:CEN を介したリージョン間 VPC 接続 を使用します。
方法 1:クロスリージョンエンドポイントの有効化 (推奨)
完全な手順については、「インターフェイスエンドポイントを介したクロスリージョンサービスへのアクセス」をご参照ください。Model Studio のシナリオにおける主要な設定は次のとおりです:
-
リージョン:ソース VPC のリージョンを選択します。
-
タイプ:[Alibaba Cloud サービス] を選択します。
-
サービスリージョン:[クロスリージョンエンドポイントを有効にする] チェックボックスをオンにし、シンガポール または 中国 (北京)を選択します。
-
エンドポイントサービス:利用可能なサービスリストから
com.aliyuncs.dashscopeを選択します。 -
クロスリージョン設定:リージョン間のトラフィック料金は CDT によって決済および請求されます。デフォルトの帯域幅は接続範囲によって異なり、中国本土内のリージョン間接続では 1,000 Mbit/s、中国本土外のリージョン間接続では 100 Mbit/s です。
残りのパラメーターは、リージョン内アクセスの場合と同様に設定します。エンドポイントを作成した後、関連付けられたセキュリティグループにインバウンドルールを追加して、ポート 80 と 443 でソース VPC からのトラフィックを許可します。
方法 1 は、中国本土とその他のリージョン間の接続をサポートしていません。国境を越えたアクセスには、方法 2 を使用してください。
設定が完了すると、ソース VPC からエンドポイントのデフォルトサービスドメイン名にアクセスした際に、PrivateLink はトラフィックを Model Studio サービスのリージョンに直接ルーティングし、プライベートなクロスリージョンアクセスを可能にします。
方法 2:Cloud Enterprise Network (CEN) を介したリージョン間 VPC 接続 — 国境を越えるシナリオ向け
この方法は、中国本土とその他のリージョン間の国境を越えたクロスリージョンアクセスに使用します。エンドポイントは Model Studio サービスと同じリージョンにある必要があり、Cloud Enterprise Network (CEN) はソース VPC をリージョンを越えてエンドポイント VPC に接続します:
-
「エンドポイント経由での API アクセス」で説明されている設定を完了します。
-
CEN を使用して、リージョン間 VPC 接続を設定します。次の点に注意してください:
-
ネットワークの競合による接続の失敗を避けるため、異なる CIDR ブロックを持つ VPC を選択してください。
-
CEN を使用して中国本土とその他のリージョン間のリージョン間 VPC 接続を確立するには、アカウントで企業実名認証を完了する必要があります。
-
-
エンドポイントに関連付けられたセキュリティグループで、ポート 80 と 443 でソース VPC からのトラフィックを許可するインバウンドルールを追加します。
設定を完了すると、ソース VPC からエンドポイントのデフォルトサービスドメイン名にアクセスした際に、Transit Router がトラフィックを Model Studio サービスのリージョンにあるエンドポイントにルーティングします。これにより、Model Studio API へのプライベートなクロスリージョンアクセスが可能になります。
デフォルトでは、エンドポイントのデフォルトサービスドメイン名は、別のリージョンの相互接続された VPC からアクセスできます。ただし、カスタムサービスドメイン名は、エンドポイントの VPC 内でのみ有効です。プライベートネットワーク経由でカスタムドメイン名を使用してソース VPC から Model Studio API にアクセスするには、「Private DNS クイックスタート」をご参照ください。カスタムサービスドメイン名と同じプライベートドメイン名を作成し、CNAME レコードを作成することで、それをエンドポイントのデフォルトサービスドメイン名に解決できます。
-
カスタムサービスドメイン名と同じプライベートな権威ドメイン名 (例:
vpc-ap-southeast-1.dashscope.aliyuncs.com) を追加し、その範囲をソース VPC に設定します。 -
DNS レコードを追加します:レコードタイプを [CNAME] に、ホストを
@に、レコード値をターゲットエンドポイントのデフォルトサービスドメイン名 (例:<u>ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com</u>) に設定します。注:Private DNS を設定する際、ホストレコードまたは完全なドメイン名にアンダースコア (_) を使用しないでください。使用すると、API 呼び出しが失敗する可能性があります。ドメイン名には、文字、数字、ハイフン (-) のみを含めることを推奨します。例えば、
test_for_dns.dashscope.aliyuncs.comの代わりにtest-for-dns.dashscope.aliyuncs.comを使用してください。
設定が完了すると、カスタムサービスドメイン名を使用してソース VPC から Model Studio API にアクセスできます。設定にカスタムサービスドメイン名とは異なるプライベートドメイン名を使用する場合は、「Private DNS の設定」をご参照ください。
課金
PrivateLink と Private DNS (プライベートホストゾーン) を使用すると、追加料金が発生します。国境を越えるシナリオでは、追加の CEN リージョン間料金が発生します。コストを見積もるには、次の課金ドキュメントをご参照ください:
-
CEN の課金 (国境を越えるシナリオのみ)
よくある質問
-
ECS インスタンスがプライベートネットワーク経由で Model Studio API にアクセスできないのはなぜですか?
次の項目を確認してください:
-
リソースが同じ VPC 内にあることを確認します。
ECS インスタンスとエンドポイントが異なる VPC にある場合、プライベートネットワーク経由で Model Studio API にアクセスすることはできません。この場合、まず VPC 接続を設定する必要があります。
-
エンドポイントに関連付けられたセキュリティグループを確認します。インバウンドルールが、ソース ECS インスタンスの CIDR ブロックからのポート 80 (HTTP) または 443 (HTTPS) でのトラフィックを許可していることを確認します。
-
エンドポイントサービスドメイン名を確認します。
デフォルトサービスドメイン名を使用してプライベートネットワーク経由で Model Studio プラットフォームにアクセスする場合、HTTP のみがサポートされます。
-
-
エンドポイントはパブリックインターネットからアクセスできますか?
いいえ。PrivateLink は Alibaba Cloud 内部ネットワーク内にプライベート接続を確立するだけです。エンドポイントはパブリックインターネットからアクセスできず、EIP (Elastic IP) アドレスをエンドポイント ENI に関連付けることもできません。
-
Private DNS を使用しているときに、カスタムドメイン名でモデルを呼び出すとエラーが表示されるのはなぜですか?
この問題は通常、プライベートドメイン解決のためのホストレコードまたは完全なドメイン名に、アンダースコア (
_) などの無効な文字が含まれている場合に発生します。ドメイン名は、文字、数字、ハイフン (-) のみで構成する必要があります。次の手順で DNS レコードを設定します:
-
権威ドメイン:Private DNS で、
dashscope.aliyuncs.com権威ドメインの DNS レコードを追加します。 -
ホストレコード:レコードタイプに [CNAME] を選択し、
test-for-dns-rightなどのカスタムドメインプレフィックスを入力します。注:ホストレコードにアンダースコア (_) を含めることはできません。正しい例
誤った例


-
レコード値:Model Studio エンドポイントのデフォルトサービスドメイン名を入力します。例:
<u>ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com</u>。
設定が完了すると、
https://test-for-dns-right.dashscope.aliyuncs.com/api/v1でモデルを呼び出すことができます (OpenAI 互換モードのエンドポイントはhttps://test-for-dns-right.dashscope.aliyuncs.com/compatible-mode/v1/chat/completionsです)。アンダースコアを含むドメイン名 (例:
https://test_for_dns_wrong.dashscope.aliyuncs.com/api/v1) を使用すると、API 呼び出しは失敗します。 -