Private Service Connect consente di accedere alle previsioni online di Vertex AI in modo sicuro da più progetti consumer e reti VPC senza bisogno di indirizzi IP pubblici, accesso a internet pubblico o un intervallo di indirizzi IP interni esplicitamente in peering.
Consigliamo Private Service Connect per i casi d'uso di previsione online che presentano i seguenti requisiti:
- Richiedi connessioni private e sicure
- Richiedi bassa latenza
- Non devono essere accessibili pubblicamente
Private Service Connect utilizza una regola di forwarding nella rete VPC per inviare il traffico in modo unidirezionale al servizio di previsione online di Vertex AI. La regola di forwarding si connette a un collegamento al servizio che espone il servizio Vertex AI alla tua rete VPC. Per ulteriori informazioni, consulta Informazioni sull'accesso ai servizi Vertex AI tramite Private Service Connect. Per saperne di più sulla configurazione di Private Service Connect, consulta la panoramica di Private Service Connect nella documentazione di Virtual Private Cloud (VPC).
Crea l'endpoint di previsione online
Utilizza uno dei seguenti metodi per creare un endpoint di previsione online con Private Service Connect abilitato:
Console
Nella console Google Cloud, in Vertex AI, vai alla pagina Previsione online.
Fai clic su Crea.
Specifica un nome visualizzato per l'endpoint.
Seleziona
Privato.Seleziona
Private Service Connect.Fai clic su Seleziona ID progetto.
Seleziona i progetti da aggiungere alla lista consentita per l'endpoint.
Fai clic su Continua.
Scegli le specifiche del tuo modello. Per ulteriori informazioni, consulta Eseguire il deployment di un modello in un endpoint.
Fai clic su Crea per creare l'endpoint ed eseguire il deployment del modello al suo interno.
Prendi nota dell'ID endpoint nella risposta.
API
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
VERTEX_AI_PROJECT_ID
: l'ID del progetto Google Cloud in cui stai creando l'endpoint di previsione online.REGION
: la regione in cui stai utilizzando Vertex AI.VERTEX_AI_ENDPOINT_NAME
: il nome visualizzato dell'endpoint di previsione online.ALLOWED_PROJECTS
: un elenco separato da virgole di ID progetto Google Cloud, ognuno racchiuso tra virgolette, ad esempio["PROJECTID1", "PROJECTID2"]
. Se un progetto non è contenuto in questo elenco, non potrai inviare richieste di previsione all'endpoint Vertex AI da questo elenco. Assicurati di includere VERTEX_AI_PROJECT_ID in questo elenco in modo da poter chiamare l'endpoint dallo stesso progetto in cui si trova.
Metodo HTTP e URL:
POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints
Corpo JSON della richiesta:
{ "displayName": "VERTEX_AI_ENDPOINT_NAME", "privateServiceConnectConfig": { "enablePrivateServiceConnect": true, "projectAllowlist": ["ALLOWED_PROJECTS"] } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata", "genericMetadata": { "createTime": "2020-11-05T17:45:42.812656Z", "updateTime": "2020-11-05T17:45:42.812656Z" } } }
ENDPOINT_ID
.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
from google.cloud import aiplatform
aiplatform.init(project=PROJECT_ID, location=REGION)
# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
project_allowlist=["ALLOWED_PROJECTS"],
),
)
Sostituisci quanto segue:
VERTEX_AI_PROJECT_ID
: l'ID del progetto Google Cloud in cui stai creando l'endpoint di previsione onlineREGION
: la regione in cui stai utilizzando Vertex AIVERTEX_AI_ENDPOINT_NAME
: il nome visualizzato dell'endpoint di previsione onlineALLOWED_PROJECTS
: un elenco separato da virgole di ID progetto Google Cloud, ciascuno racchiusi tra virgolette. Ad esempio,["PROJECTID1", "PROJECTID2"]
. Se un progetto non è contenuto in questo elenco, non potrai inviare richieste di previsione all'endpoint Vertex AI da quest'ultimo. Assicurati di includere VERTEX_AI_PROJECT_ID in questo elenco per poter chiamare l'endpoint dallo stesso progetto in cui si trova.
Annota ENDPOINT_ID
alla fine dell'URI endpoint restituito:
INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')
Esegui il deployment del modello
Dopo aver creato l'endpoint di previsione online con Private Service Connect abilitato, esegui il deployment del tuo modello nell'endpoint seguendo i passaggi descritti in Eseguire il deployment di un modello in un endpoint.
Recupera l'URI del collegamento al servizio
Quando esegui il deployment del modello, viene creato un collegamento al servizio per l'endpoint di previsione online. Questo collegamento al servizio rappresenta il servizio di previsione online di Vertex AI esposto alla tua rete VPC. Esegui il comando gcloud ai endpoints describe
per ottenere l'URI del collegamento al servizio.
Elenca solo il valore
serviceAttachment
nei dettagli dell'endpoint:gcloud ai endpoints describe ENDPOINT_ID \ --project=VERTEX_AI_PROJECT_ID \ --region=REGION \ | grep -i serviceAttachment
Sostituisci quanto segue:
ENDPOINT_ID
: l'ID dell'endpoint di previsione onlineVERTEX_AI_PROJECT_ID
: l'ID del progetto Google Cloud in cui hai creato l'endpoint di previsione onlineREGION
: la regione per questa richiesta
L'output è simile al seguente:
serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
Prendi nota dell'intera stringa nel campo
serviceAttachment
. Si tratta dell'URI del collegamento al servizio.
Creare una regola di forwarding
Puoi prenotare un indirizzo IP interno e creare una regola di forwarding con quell'indirizzo. Per creare la regola di forwarding, devi avere l'URI del collegamento al servizio del passaggio precedente.
Per prenotare un indirizzo IP interno per la regola di forwarding, utilizza il comando
gcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --project=VPC_PROJECT_ID \ --region=REGION \ --subnet=SUBNETWORK \ --addresses=INTERNAL_IP_ADDRESS
Sostituisci quanto segue:
ADDRESS_NAME
: un nome per l'indirizzo IP internoVPC_PROJECT_ID
: l'ID del progetto Google Cloud che ospita la tua rete VPC. Se l'endpoint di previsione online e la regola di forwarding di Private Service Connect sono ospitati nello stesso progetto, utilizzaVERTEX_AI_PROJECT_ID
per questo parametro.REGION
: la regione Google Cloud in cui va creata la regola di forwarding Private Service ConnectSUBNETWORK
: il nome della subnet VPC che contiene l'indirizzo IPINTERNAL_IP_ADDRESS
: l'indirizzo IP interno da prenotare. Questo parametro è facoltativo.- Se questo parametro viene specificato, l'indirizzo IP deve rientrare nell'intervallo di indirizzi IP principali della subnet. L'indirizzo IP può essere un indirizzo RFC 1918 o una subnet con intervalli non RFC.
- Se questo parametro viene omesso, viene allocato automaticamente un indirizzo IP interno.
- Per ulteriori informazioni, consulta Prenotare un nuovo indirizzo IPv4 o IPv6 interno statico.
Per verificare che l'indirizzo IP sia riservato, utilizza il comando
gcloud compute addresses list
:gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \ --project=VPC_PROJECT_ID
Nella risposta, verifica che sia visualizzato lo stato
RESERVED
per l'indirizzo IP.Per creare la regola di forwarding e puntarla al collegamento del servizio di previsione online, utilizza il comando
gcloud compute forwarding-rules create
:gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \ --address=ADDRESS_NAME \ --project=VPC_PROJECT_ID \ --region=REGION \ --network=VPC_NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI
Sostituisci quanto segue:
PSC_FORWARDING_RULE_NAME
: un nome per la regola di forwardingVPC_NETWORK_NAME
: il nome della rete VPC in cui deve essere creato l'endpointSERVICE_ATTACHMENT_URI
: il collegamento al servizio di cui hai creato una nota in precedenza
Per verificare che il collegamento al servizio accetti l'endpoint, utilizza il comando
gcloud compute forwarding-rules describe
:gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \ --project=VPC_PROJECT_ID \ --region=REGION
Nella risposta, verifica che sia visualizzato uno stato
ACCEPTED
nel campopscConnectionStatus
.
(Facoltativo) Ottieni l'indirizzo IP interno
Se non hai specificato un valore per INTERNAL_IP_ADDRESS
al momento della creazione della regola di forwarding, puoi ottenere l'indirizzo allocato automaticamente utilizzando il comando gcloud compute forwarding-rules describe
:
gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress
Sostituisci quanto segue:
VERTEX_AI_PROJECT_ID
: il tuo ID progettoREGION
: il nome della regione per questa richiesta
Ricevi previsioni online
La ricezione di previsioni online da un endpoint con Private Service Connect è simile a quella per ricevere previsioni online dagli endpoint pubblici, tranne per le seguenti considerazioni:
- La richiesta deve essere inviata da un progetto specificato in
projectAllowlist
al momento della creazione dell'endpoint di previsione online. - Se l'accesso globale non è abilitato, la richiesta deve essere inviata dalla stessa regione.
Per ottenere previsioni utilizzando REST, devi connetterti utilizzando l'indirizzo IP statico dell'endpoint, a meno che non crei un record DNS per l'indirizzo IP interno. Ad esempio, devi inviare le tue richieste
predict
al seguente endpoint:https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Sostituisci
INTERNAL_IP_ADDRESS
con l'indirizzo IP interno che hai prenotato in precedenza.Di seguito è riportato un esempio di come puoi inviare la richiesta predict utilizzando Python:
REQUEST_FILE = "PATH_TO_INPUT_FILE" import json import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) with open(REQUEST_FILE) as json_file: data = json.load(json_file) response = psc_endpoint.predict( instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS ) print(response)
Sostituisci
PATH_TO_INPUT_FILE
con il percorso di un file JSON contenente l'input della richiesta.
(Facoltativo) Crea un record DNS per l'indirizzo IP interno
Ti consigliamo di creare un record DNS in modo da poter ottenere previsioni online dal tuo endpoint senza dover specificare l'indirizzo IP interno.
Per ulteriori informazioni, consulta Altri modi per configurare il DNS.
Crea una zona DNS privata utilizzando il comando
gcloud dns managed-zones create
. Questa zona è associata alla rete VPC in cui è stata creata la regola di forwarding.DNS_NAME_SUFFIX="prediction.p.vertexai.goog." # DNS names have "." at the end. gcloud dns managed-zones create ZONE_NAME \ --project=VPC_PROJECT_ID \ --dns-name=$DNS_NAME_SUFFIX \ --networks=VPC_NETWORK_NAME \ --visibility=private \ --description="A DNS zone for Vertex AI endpoints using Private Service Connect."
Sostituisci quanto segue:
ZONE_NAME
: il nome della zona DNS
Per creare un record DNS nella zona, utilizza il comando
gcloud dns record-sets create
:DNS_NAME=ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX gcloud dns record-sets create $DNS_NAME \ --rrdatas=INTERNAL_IP_ADDRESS \ --zone=ZONE_NAME \ --type=A \ --ttl=60 \ --project=VPC_PROJECT_ID
Sostituisci quanto segue:
VERTEX_AI_PROJECT_NUMBER
: il numero del tuo progettoVERTEX_AI_PROJECT_ID
. Puoi individuare il numero di progetto nella console Google Cloud. Per maggiori informazioni, consulta Identificazione dei progetti.INTERNAL_IP_ADDRESS
: l'indirizzo IP interno dell'endpoint di previsione online
Ora puoi inviare le tue richieste
predict
a:https://ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Di seguito è riportato un esempio di come puoi inviare la richiesta predict alla zona DNS utilizzando Python:
REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
with open(REQUEST_FILE) as json_file:
data = json.load(json_file)
response = psc_endpoint.predict(
instances=data["instances"], endpoint_override=DNS_NAME
)
print(response)
Sostituisci DNS_NAME
con il nome DNS specificato nel comando gcloud dns record-sets create
.
Limitazioni
Gli endpoint Vertex AI con Private Service Connect sono soggetti alle seguenti limitazioni:
- Il traffico in uscita privato dall'endpoint non è supportato. Poiché le regole di forwarding di Private Service Connect sono unidirezionali, altri carichi di lavoro privati di Google Cloud non sono accessibili all'interno del container.
- La configurazione
projectAllowlist
di un endpoint non può essere modificata. - Il logging degli accessi non è supportato.
- Il logging delle richieste e delle risposte non è supportato.
- Vertex Explainable AI non è supportato.
Limitazioni dell'anteprima
Nell'anteprima, si applicano le seguenti limitazioni aggiuntive:
- Se annulli il deployment di tutti i modelli Private Service Connect ed esegui nuovamente il deployment, devi ricreare la regola di forwarding, anche se il nome del collegamento al servizio è lo stesso.
- Tutti gli endpoint devono avere la stessa configurazione
projectAllowlist
.