Para llamar a las API de Model Studio desde una VPC sin enrutar el tráfico a través de la Internet pública, agregue una conexión PrivateLink en la consola de Model Studio y asóciela con su espacio de trabajo.
Funcionamiento
La puerta de enlace de Model Studio admite los dos métodos de acceso siguientes:
- Acceso a red pública: Llame a las API de Model Studio a través del nombre de dominio MaaS público
{WorkspaceId}.{RegionId}.maas.aliyuncs.com. El tráfico se enruta a través de la Internet pública. - Conexión privada PrivateLink: Agregue una conexión PrivateLink para su VPC en la consola de Model Studio y, a continuación, llame a las API de Model Studio a través del nombre de dominio privado. El tráfico permanece dentro de la red de Alibaba Cloud y no atraviesa la Internet pública.
Después de agregar una conexión PrivateLink en la consola de Model Studio, PrivateLink establece una conexión privada (conexión de endpoint) entre su VPC y Model Studio. La conexión es unidireccional: los recursos de su VPC pueden acceder a Model Studio, pero Model Studio no puede acceder a su VPC a través de esta conexión.
Cuando los recursos de su VPC acceden al nombre de dominio privado, PrivateLink enruta el tráfico hacia Model Studio sin atravesar la Internet pública.
Model Studio está disponible en las siguientes regiones:
-
Nube pública: China (Beijing) y China (Hong Kong).
Actualmente, el acceso a la red privada no es compatible con otras regiones.
Acceder a las API de Model Studio a través de una conexión PrivateLink
Paso 1: Agregar una conexión PrivateLink en la consola de Model Studio
-
Inicie sesión en la consola de Model Studio. En el panel de navegación izquierdo, seleccione Settings > Network configuration.
-
La primera vez que utilice esta función, complete las siguientes preparaciones en el panel Agregar PrivateLink:
- Autorizar rol vinculado al servicio para PrivateLink: Haga clic en Authorize Now y, a continuación, haga clic en Confirm Authorization para crear el rol vinculado al servicio
AliyunServiceRoleForBackrouterAccessNet. - Activar PrivateLink: Haga clic en Enable Now para activar el servicio PrivateLink.
- Autorizar rol vinculado al servicio para PrivateLink: Haga clic en Authorize Now y, a continuación, haga clic en Confirm Authorization para crear el rol vinculado al servicio
-
En la sección VPC private network access, haga clic en Add y configure los siguientes parámetros. Deje los demás parámetros con sus valores predeterminados.
- Region: Seleccione la región de su servicio de Model Studio, por ejemplo, China (Hong Kong).
- VPC: Seleccione la VPC desde la cual want acceder a Model Studio. La conexión PrivateLink se crea en esta VPC, y solo los recursos como instancias ECS y contenedores en esta VPC pueden alcanzar Model Studio a través del nombre de dominio privado. Si no hay ninguna VPC disponible, haga clic en Create VPC para crear una en la consola de VPC. Para usar una VPC compartida por otra cuenta, seleccione esa VPC compartida. Para obtener más información, consulte Acceso entre cuentas.
- Zonas y switches: Seleccione una zona que sea compatible con Model Studio y contenga un vSwitch, y luego seleccione el vSwitch. La conexión PrivateLink ocupa una dirección IP interna del vSwitch seleccionado en cada zona como la dirección de resolución DNS interna del nombre de dominio privado. Puede agregar hasta dos combinaciones de zona y vSwitch. Agregue dos para lograr alta disponibilidad, de modo que el tráfico pueda conmutar por error si una zona deja de estar disponible. Si no hay ningún vSwitch disponible, haga clic en Create Switch para crear uno en la consola de VPC.
- Security Group: Seleccione el grupo de seguridad para asociar con la conexión PrivateLink. El grupo de seguridad controla qué recursos pueden acceder a la conexión. Asegúrese de que el grupo de seguridad permita el tráfico de entrada en el puerto 443 (HTTPS). Si no hay ningún grupo de seguridad disponible, haga clic en Create Security Group para crear uno en la consola de ECS.
-
Haga clic en Confirm y espere hasta que el Status de la conexión cambie a Creado. La conexión surte efecto en aproximadamente 1 a 3 minutos. Una vez que surta efecto, cualquier servidor en la nube dentro de la VPC podrá utilizar el nombre de dominio privado para acceder a Model Studio.
Paso 2: Asociar la conexión PrivateLink con un espacio de trabajo
Un espacio de trabajo que necesite acceder a Model Studio a través de la red privada debe estar asociado con una conexión PrivateLink.
- En el panel de navegación izquierdo de la consola de Model Studio, seleccione Workspaces y, a continuación, cree un espacio de trabajo o edite el espacio de trabajo de destino.
- En Configuración avanzada, establezca PrivateLink en la conexión PrivateLink de destino. Cada opción muestra el ID del endpoint con su región y VPC. Si la conexión de destino no aparece en la lista, haga clic en Create PrivateLink en la lista desplegable para crear una. Después de la asociación, el espacio de trabajo podrá acceder a Model Studio a través de la conexión privada de la VPC correspondiente.
- Para eliminar la asociación, edite el espacio de trabajo, borre PrivateLink y guarde los cambios. Alternativamente, en la página Network configuration, expanda la fila de la conexión PrivateLink de destino y haga clic en Unbind en la columna Associated workspace para ir al espacio de trabajo correspondiente. Una conexión PrivateLink asociada con espacios de trabajo no se puede eliminar hasta que se desvincule.
Paso 3: Obtener el nombre de dominio privado
Después de completar el Paso 2, se genera un nombre de dominio privado para cada espacio de trabajo asociado. En la página Configuración de red, expanda la fila de la conexión PrivateLink de destino en la lista Acceso a red privada VPC y copie el nombre de dominio privado en la columna Endpoint. La columna Espacio de trabajo asociado muestra el ID del espacio de trabajo al que pertenece el nombre de dominio. El nombre de dominio privado tiene el formato {WorkspaceId}-{VpcId}.{region-id}.maas.aliyuncs.com, donde WorkspaceId es el ID del espacio de trabajo y VpcId es el ID de la VPC a la que pertenece la conexión PrivateLink.
También puede encontrar el nombre de dominio privado en la columna API Host del espacio de trabajo de destino en la página Espacios de trabajo. Después de la asociación, esta columna muestra tanto el nombre de dominio público como el privado.
El nombre de dominio privado solo se puede resolver y acceder dentro de la VPC seleccionada. Utilice HTTPS (puerto 443) para llamar a las API de Model Studio. Si no hay ningún espacio de trabajo asociado, la columna Endpoint en la fila expandida estará vacía.
Paso 4: Verificar la conexión
Reemplace el nombre de dominio en base_url de su solicitud de API con el nombre de dominio privado del paso anterior y, a continuación, realice la llamada desde dentro de la VPC.
Por ejemplo, para llamar al modelo de texto Qwen en modo compatible con OpenAI:
- Antes del reemplazo:
https://{WorkspaceId}.{RegionId}.maas.aliyuncs.com/compatible-mode/v1/chat/completions - Después del reemplazo:
https://{WorkspaceId}-{VpcId}.{RegionId}.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Ejemplo de llamada:
# Replace the original domain name with the private domain name from the previous step.
curl -X POST https://{WorkspaceId}-{VpcId}.{RegionId}.maas.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?"
}
]
}'
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Replace the original domain name with the private domain name from the previous step.
base_url="https://{WorkspaceId}-{VpcId}.{RegionId}.maas.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())
import os
from http import HTTPStatus
# DashScope SDK version 1.14.0 or later is recommended.
import dashscope
from dashscope import Generation
# Replace the original domain name with the private domain name from the previous step.
dashscope.base_http_api_url = "https://{WorkspaceId}-{VpcId}.{RegionId}.maas.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 SDK version 2.12.0 or later is recommended.
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 {
// Replace the original domain name with the private domain name from the previous step.
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}-{VpcId}.{RegionId}.maas.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) {
// Print the error message.
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
}
}
Antes de realizar la llamada, asegúrese de haber obtenido y configurado una clave de API. Para pasar la clave de API directamente, reemplace
$DASHSCOPE_API_KEYcon su clave de API.
Acceso entre cuentas
De forma predeterminada, una conexión PrivateLink solo se puede crear en una VPC que pertenezca a la cuenta actual, y solo los recursos de esa VPC pueden acceder a Model Studio a través del nombre de dominio privado. Si la VPC que contiene los recursos de llamada pertenece a otra cuenta de Alibaba Cloud, puede usar cualquiera de los siguientes métodos:
- Método 1: uso compartido de VPC: comparta el vSwitch de la VPC del llamador con la cuenta de Model Studio. La conexión PrivateLink se crea directamente en la VPC del llamador.
- Método 2: interconexión de VPC: la conexión PrivateLink se crea en una VPC propia de la cuenta de Model Studio, y la VPC del llamador accede a la conexión PrivateLink después de interconectarse con esa VPC mediante una conexión de emparejamiento de VPC o Cloud Enterprise Network (CEN).
Ninguno de los métodos requiere compartir la propia conexión PrivateLink entre cuentas. Si el llamador no es la cuenta de Model Studio, la cuenta de Model Studio proporciona el nombre de dominio privado y la clave de API del espacio de trabajo al llamador.
Método 1: uso compartido de VPC
El uso compartido de VPC implica dos cuentas:
- Cuenta propietaria de la VPC: posee la VPC y el vSwitch, y comparte el vSwitch.
- Cuenta de Model Studio: acepta el uso compartido, agrega la conexión PrivateLink en la consola de Model Studio y asocia el espacio de trabajo.
La conexión PrivateLink se crea en la VPC compartida, y los recursos de esa VPC que pertenezcan a cualquier cuenta pueden usar la conexión. La cuenta propietaria de la VPC también puede crear por sí misma una conexión PrivateLink en esa VPC para que la usen otras cuentas de la VPC compartida. En cualquier caso, las tarifas de PrivateLink se facturan a la cuenta que crea la conexión PrivateLink. Los pasos siguientes usan como ejemplo la creación de la conexión PrivateLink por parte de la cuenta de Model Studio.
Paso 1: la cuenta propietaria de la VPC comparte el vSwitch
En la consola Resource Sharing, haga clic en Create Sharing Unit y complete Configure Basic Information and Add Resources (agregue el vSwitch que desea compartir), Associate Permissions (seleccione AliyunRSDefaultPermissionVSwitch), Associate Resource Users (introduzca el UID de la cuenta de Model Studio) y Confirm and Submit. El uso compartido de VPC comparte un vSwitch, no toda la VPC. Para obtener más información, consulte Compartir una VPC.
Paso 2: la cuenta de Model Studio acepta el uso compartido
Inicie sesión en la consola Resource Sharing con la cuenta de Model Studio y acepte el uso compartido en la página Shared with Me. Si la unidad de uso compartido ya está asociada, omita este paso.
Paso 3: la cuenta de Model Studio agrega una conexión PrivateLink
Inicie sesión en la consola de Model Studio y agregue una conexión PrivateLink como se describe en el Paso 1 de este tema. Tenga en cuenta la siguiente configuración:
- Region: seleccione la región donde se encuentra la VPC compartida. La región debe admitir el acceso de red privada de Model Studio, por ejemplo, China (Beijing) o China (Hong Kong).
- VPC: seleccione la VPC compartida.
- Zones and Switches: seleccione el vSwitch compartido en la VPC compartida.
- Security Group: seleccione un grupo de seguridad disponible en la VPC compartida y asegúrese de que sus reglas de entrada permitan que los recursos de llamada accedan al puerto 443.
Los demás parámetros son los mismos que los del flujo para la misma cuenta.
Paso 4: complete la configuración restante y realice las llamadas
Una vez creada la conexión PrivateLink, asocie el espacio de trabajo y obtenga el nombre de dominio privado como se describe en los Pasos 2, Paso 3 y Paso 4 de este tema. El llamador usa ese nombre de dominio privado y la clave de API del espacio de trabajo en la VPC compartida para realizar las llamadas.
Método 2: interconexión de VPC
La interconexión de VPC implica dos cuentas:
- Cuenta de Model Studio: crea la conexión PrivateLink en su propia VPC (en adelante, VPC de Model Studio) y asocia el espacio de trabajo.
- Cuenta del llamador: posee la VPC que contiene los recursos de llamada (en adelante, VPC del llamador).
Después de la interconexión, la red entre las dos VPC es bidireccional. Cualquiera de las cuentas puede crear una conexión PrivateLink en su propia VPC para que la otra cuenta la llame; es decir, ambas cuentas pueden actuar como cuenta de Model Studio.
Paso 1: conecte las redes
Conecte la VPC de Model Studio y la VPC del llamador mediante cualquiera de los siguientes métodos. Los bloques CIDR de las dos VPC no deben superponerse. Para comparar la selección y la facturación de ambos métodos, consulte Descripción general de la interconexión de VPC.
-
Conexión de emparejamiento de VPC
- Cualquiera de las cuentas crea una conexión de emparejamiento en la consola de VPC, selecciona Cross-account para Accepter Account Type e introduce el UID de la cuenta del mismo nivel y el ID de la VPC del mismo nivel.
- La cuenta del mismo nivel acepta la conexión en la página de conexiones de emparejamiento de VPC de la consola de VPC.
- Cada cuenta agrega una ruta en la tabla de rutas de su propia VPC, con el bloque CIDR de la VPC del mismo nivel como destino y la conexión de emparejamiento como siguiente salto.
Para obtener más información, consulte Conexiones de emparejamiento de VPC.
-
Cloud Enterprise Network (CEN)
- Cualquiera de las cuentas crea una instancia de CEN y crea un transit router en la región donde se encuentra la VPC.
- La cuenta del mismo nivel autoriza su VPC a la instancia de CEN.
- Cree una conexión de VPC para cada una de las dos VPC en el transit router para conectar ambas VPC al mismo transit router.
Para obtener más información, consulte Usar transit routers de Enterprise Edition para conectar VPC entre regiones y cuentas.
Paso 2: permita el tráfico en el grupo de seguridad de la conexión PrivateLink
Después de conectar las redes, el grupo de seguridad de la conexión PrivateLink debe permitir el tráfico del llamador para que este pueda acceder a la conexión PrivateLink. La cuenta de Model Studio agrega la siguiente regla de entrada al grupo de seguridad asociado con la conexión PrivateLink:
| Parámetro | Valor |
|---|---|
| Política de autorización | Permitir |
| Tipo de protocolo | TCP personalizado |
| Rango de puertos | 443 |
| Objeto de autorización | Bloque CIDR de la VPC del llamador, por ejemplo, 192.168.0.0/16. Puede consultarlo en la página de detalles de la VPC en la consola de VPC |
Si no se permite el tráfico, las llamadas agotarán el tiempo de espera de conexión aunque las redes estén conectadas.
Paso 3: realice las llamadas
La cuenta de Model Studio proporciona el nombre de dominio privado y la clave de API del espacio de trabajo a la cuenta del llamador, y los recursos de la VPC del llamador realizan las llamadas como se describe en el Paso 4 de este tema. Si se devuelve un error de tiempo de espera de conexión como Failed to connect to <private domain name> port 443, compruebe la configuración de red del paso 1 y las reglas del grupo de seguridad del paso 2.
Facturación
El uso de PrivateLink genera cargos adicionales. Para obtener más información, consulte Facturación de PrivateLink.
Las tarifas de PrivateLink y las de invocación de modelos se facturan a la cuenta que crea la conexión PrivateLink, independientemente de qué cuenta sea propietaria de la VPC. Para la facturación de las conexiones de emparejamiento de VPC y CEN, consulte Conexiones de emparejamiento de VPC y Reglas de facturación de CEN.
FAQ
-
¿Por qué mi instancia ECS no puede acceder a las API de Model Studio a través de la conexión PrivateLink?
Realice la solución de problemas de la siguiente manera:
-
Compruebe si la instancia ECS se encuentra en la misma VPC que la conexión PrivateLink.
Si la instancia ECS se encuentra en una VPC diferente, no podrá acceder a Model Studio a través de la red privada. Primero debe configurar la interconexión de VPC, por ejemplo, una conexión de emparejamiento de VPC o CEN, y permitir el tráfico en el grupo de seguridad de la conexión PrivateLink. Para obtener más información, consulte Método 2: interconexión de VPC.
-
Compruebe el grupo de seguridad asociado con la conexión PrivateLink y asegúrese de que una regla de entrada permita el tráfico desde el bloque CIDR de la instancia ECS en el puerto 443 (HTTPS).
-
Compruebe el estado de la conexión PrivateLink.
El nombre de dominio privado solo se puede utilizar después de que el estado de la conexión sea Creado y la conexión haya surtido efecto (aproximadamente de 1 a 3 minutos después de la creación).
-
Verifique si el espacio de trabajo está asociado.
Solo se genera un nombre de dominio privado después de asociar un espacio de trabajo con la conexión PrivateLink. Si la columna Endpoint en la fila expandida está vacía, asocie el espacio de trabajo como se describe en el Paso 2.
-
-
¿Se puede acceder a un endpoint desde la Internet pública?
No. PrivateLink establece conexiones privadas únicamente dentro de la red de Alibaba Cloud. No se puede acceder a los endpoints desde la Internet pública, y las ENI de los endpoints no se pueden asociar con direcciones IP elásticas (EIP).
-
¿Es necesario asociar un espacio de trabajo con una conexión PrivateLink heredada?
No. Una conexión PrivateLink heredada, que se creó como un endpoint de interfaz en la consola de PrivateLink (VPC), está asociada con todos los espacios de trabajo de forma predeterminada. Puede utilizarla para acceder a las API de Model Studio a través de la red privada sin realizar el Paso 2.
Al expandir una conexión heredada en la página Configuración de red, la columna Endpoint muestra
vpc-{region-id}.dashscope.aliyuncs.com(por ejemplo,vpc-ap-southeast-1.dashscope.aliyuncs.com), y la columna Espacio de trabajo asociado indica que la conexión está asociada con todos los espacios de trabajo. Esto difiere del flujo actual, que enumera{WorkspaceId}-{VpcId}.{region-id}.maas.aliyuncs.compara cada espacio de trabajo asociado.Ya no es posible crear una conexión PrivateLink de esta manera. Para agregar una, siga el Paso 1 para crearla en la consola de Model Studio y, a continuación, siga el Paso 2 para asociar los espacios de trabajo que necesitan acceso a la red privada.