仮想プライベートクラウド(VPC)内から Alibaba Cloud Model Studio の API を呼び出す際に、パブリックインターネットを経由しない通信を実現するには、プライベートエンドポイントを作成します。これにより、すべての通信が Alibaba Cloud の内部ネットワーク内で完結します。
仕組み
VPC 内にインターフェイスエンドポイントを作成すると、Alibaba Cloud PrivateLink によって、お客様の VPC と Alibaba Cloud Model Studio の間でプライベート接続(エンドポイント接続)が確立されます。この接続は単方向であり、お客様の VPC 内のリソースが Alibaba Cloud Model Studio にアクセスすることのみを許可します。Alibaba Cloud Model Studio がこの接続を用いてお客様の VPC 内のリソースにアクセスすることはできません。
VPC 内のコンピューティングリソースがエンドポイントにアクセスすると、トラフィックは PrivateLink を介して Alibaba Cloud Model Studio のサーバー側に転送され、パブリックネットワークを走査しません。
エンドポイントは、Alibaba Cloud Model Studio サービスと同じリージョンに配置する必要があります。他のリージョンの VPC からプライベートにサービスにアクセスする場合は、「Alibaba Cloud Model Studio API へのクロスリージョンプライベートアクセス」をご参照ください。
リージョン:
パブリッククラウド:シンガポール、中国(北京)。
米国(バージニア)リージョンでは、現在プライベートネットワークアクセスはサポートされていません。
エンドポイントを用いた Alibaba Cloud Model Studio API のアクセス
ステップ 1:インターフェイスエンドポイントの作成
パブリッククラウド
エンドポイントコンソールにログインします。
初めてエンドポイントを利用する場合は、画面上の指示に従って PrivateLink を有効化してください。
インターフェイスエンドポイント タブで、エンドポイントの作成 をクリックし、以下のパラメーターを設定します。その他のパラメーターはデフォルト値のままとしてください。
リージョン: Model Studio サービスリージョンに応じて、"[シンガポール" または "中国 (北京)]"を選択できます。
ノード名:Alibaba Cloud Model Studio PrivateLink エンドポイントなど、任意の名称を指定できます。
エンドポイントタイプ: インターフェイスエンドポイント を選択できます。
エンドポイントサービス: Alibaba Cloud サービス を選択し、下部の入力ボックスで com.aliyuncs.dashscope を検索・選択します。

VPC:Alibaba Cloud Model Studio にアクセスするために使用する VPC を選択できます。エンドポイントはこの VPC 内に作成され、VPC 内の ECS インスタンスやコンテナなどのリソースがプライベートエンドポイント経由で Alibaba Cloud Model Studio にアクセスできます。
ゾーンおよび vSwitch:インターフェイスエンドポイントは、選択した vSwitch に対応するゾーンにエンドポイントネットワークインターフェースコントローラー(ENI)を作成し、VPC 内からのプライベートネットワークトラフィックを受信します。高可用性を実現するためには、少なくとも 2 つの異なるゾーンから vSwitch を選択してください。いずれかのゾーンに障害が発生した場合、トラフィックは自動的に他のゾーンの ENI にフェイルオーバーされ、サービス中断を回避します。
セキュリティグループ:エンドポイント ENI に関連付けられたセキュリティグループを選択し、誰がエンドポイントにアクセスできるかを制御できます。そのため、ポート 80(HTTP)およびポート 443(HTTPS)へのインバウンドアクセスを許可するよう設定してください。
作成 をクリックして作成を完了します。
ステップ 2:エンドポイントサービスのドメイン名の取得
パブリッククラウド
インターフェイスエンドポイントの作成後、エンドポイントの詳細ページでサービスドメイン名を確認できます。このドメイン名を用いて、今後の Alibaba Cloud Model Studio API へのプライベートアクセスを行います。
デフォルトサービスドメイン名 は HTTP プロトコルのみをサポートします。HTTPS によるアクセスには、カスタムドメイン名 を使用します。

ステップ 3:呼び出しと検証
Alibaba Cloud Model Studio API の `base_url` に含まれるドメイン名を、前ステップで取得したエンドポイントサービスドメイン名に置き換えます。その後、対応する 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": "あなたは親切なアシスタントです。"
},
{
"role": "user",
"content": "あなたは誰ですか?"
}
]
}'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': 'あなたは親切なアシスタントです。'},
{'role': 'user', 'content': 'あなたは誰ですか?'}],
)
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': 'あなたは誰ですか?'
}]
response = Generation.call(
model="qwen-flash",
messages=messages,
result_format='message'
)
if response.status_code == HTTPStatus.OK:
print(response)
else:
print('リクエスト ID: %s, ステータスコード: %s, エラーコード: %s, エラーメッセージ: %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("あなたは親切なアシスタントです。")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("あなたは誰ですか?")
.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("生成サービスの呼び出し中にエラーが発生しました:" + e.getMessage());
}
}
}呼び出しを実行する前に、API キーを取得しておく必要があります。API キーを直接渡す場合は、$DASHSCOPE_API_KEY をご自身の API キーに置き換えてください。Alibaba Cloud Model Studio API へのクロスリージョンプライベートアクセス
エンドポイントは、Alibaba Cloud Model Studio サービスと同じリージョンに配置する必要があります。他のリージョンの VPC からプライベートにサービスにアクセスするには、以下の構成を行います。
前のセクションの手順に従い、エンドポイントを用いた Alibaba Cloud Model Studio API へのアクセス を構成します。
Cloud Enterprise Network(CEN)を用いて、クロスリージョン VPC 接続性 を構成します。注意事項:
接続先の両端で CIDR ブロックが重複しない VPC を選択し、接続障害を引き起こす可能性のある競合を回避してください。
CEN を用いて中国本土とその他のリージョン間でクロスリージョン VPC 接続性を確立するには、アカウントで 企業本人確認 を完了する必要があります。
エンドポイントに関連付けられたセキュリティグループに、リクエスト元 VPC のリソースからのポート 80 および 443 のトラフィックを許可するインバウンドルールを追加します。
構成が完了すると、リクエスト元 VPC からエンドポイントのデフォルトサービスドメイン名にアクセスすると、トラフィックがトランジットルーター(TR)を経由して、Alibaba Cloud Model Studio サービスが展開されているリージョンのエンドポイントにルーティングされます。これにより、API へのクロスリージョンプライベートアクセスが可能になります。
デフォルトでは、エンドポイントのデフォルトサービスドメイン名は相互接続されたクロスリージョン VPC から直接アクセス可能です。ただし、カスタムドメイン名は、エンドポイントが配置されている VPC 内でのみ有効です。リクエスト元 VPC からカスタムドメイン名を用いて Alibaba Cloud Model Studio API にプライベートにアクセスするには、「プライベートドメイン名解決の迅速な活用」をご参照ください。カスタムドメイン名と一致するプライベートドメイン名を作成し、CNAME レコードを用いてエンドポイントのデフォルトサービスドメイン名に解決します。
カスタムドメイン名と一致するプライベート権限のあるドメイン名を追加します。たとえば、 または
vpc-ap-southeast-1.dashscope.aliyuncs.comです。範囲選択では、リクエスト元 VPC を選択します。DNS レコードを追加します:レコードタイプを CNAME に設定し、ホストレコードには
@を入力し、レコード値にはエンドポイントのデフォルトサービスドメイン名(例: または<u>ep-***.dashscope.ap-southeast-1.privatelink.aliyuncs.com</u>)を入力します。注:プライベートドメイン名解決の構成時に、ホストレコードまたは完全なドメイン名にアンダースコア(_)を使用しないでください。これにより API 呼び出しが失敗する可能性があります。ドメイン名には、英字、数字、ハイフン(-)のみを含めることが推奨されます。たとえば、
test-for-dns.dashscope.aliyuncs.comは有効ですが、test_for_dns.dashscope.aliyuncs.comは無効です。
構成が完了すると、リクエスト元 VPC からカスタムドメイン名を用いて Alibaba Cloud Model Studio API にアクセスできます。カスタムドメイン名とは異なるプライベートドメイン名を使用する場合は、「プライベートドメイン名解決の構成」をご参照ください。
課金
PrivateLink、Cloud Enterprise Network(CEN)、およびプライベートホステッドゾーンには追加料金が発生します。料金の内容および見積もりについては、以下の課金ドキュメントをご参照ください。
よくある質問
ECS インスタンスがプライベート接続経由で Alibaba Cloud Model Studio API にアクセスできないのはなぜですか?
以下の手順でトラブルシューティングを行ってください。
リソースが同一の VPC 内にあるか確認します。
ECS インスタンスの VPC とエンドポイントが構成されている VPC が異なる場合、プライベートアクセスはできません。まず VPC ピアリング を構成する必要があります。
エンドポイントに関連付けられたセキュリティグループを確認し、リクエスト元 ECS インスタンスの CIDR ブロックからポート 80(HTTP)またはポート 443(HTTPS)へのアクセスを許可するインバウンドルールが追加されているか確認します。
エンドポイントサービスドメイン名を確認します。
デフォルトサービスドメイン名を用いた Alibaba Cloud Model Studio プラットフォームへのプライベートアクセスは、HTTP のみをサポートします。
エンドポイントをパブリックネットワークからアクセスできますか?
いいえ。PrivateLink は Alibaba Cloud の内部ネットワーク内でのみプライベート接続を確立するために使用されます。エンドポイントはパブリックネットワークからアクセスできず、エンドポイント ENI に Elastic IP Address(EIP)を関連付けることはできません。
プライベートホステッドゾーン を使用している場合、カスタムドメイン名でモデルを呼び出したときにエラーが発生するのはなぜですか?
この問題は、通常、プライベートドメイン名解決の構成時に使用したホストレコード(または完全なドメイン名)にアンダースコア(_)などの不適切な文字が含まれているために発生します。ドメイン名には、英字、数字、ハイフン(-)のみを含めることが推奨されます。
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)を使用すると、呼び出しエラーが発生します。