Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Questa pagina mostra come definire un proxy API come modello di funzionalità Apigee in YAML ed eseguirne il deployment con Google Cloud CLI. Per prima cosa, crea un proxy semplice, poi crea un esempio più completo che funge da front-end per un modello Gemini.
Per informazioni di base, vedi Configurazione di un proxy con YAML. Per lo schema completo, consulta il riferimento per la configurazione YAML del proxy API.
Prima di iniziare
- Attiva l'API Vertex AI nel tuo progetto Google Cloud in modo che il proxy possa comunicare con i modelli Gemini.
gcloud services enable aiplatform.googleapis.com
- Installa e inizializza Google Cloud CLI.
- Per accedere ai comandi utilizzati in questo tutorial, installa il componente gcloud beta:
gcloud components install beta
- Avere un'organizzazione Apigee e almeno un ambiente. Prendi nota dei nomi dell'organizzazione e dell'ambiente. Gli esempi utilizzano ORG e ENV come segnaposto. Il gateway AI nella Parte 2 richiede inoltre un ambiente Intermedio o Completo (non un ambiente Base); vedi Tipi di ambiente Apigee.
- Assicurati di disporre delle autorizzazioni necessarie:
- Per importare (creare) un proxy API: il ruolo Amministratore API
(
roles/apigee.apiAdmin) o un ruolo equivalente che concedaapigee.proxies.create. - Per eseguire il deployment di un proxy API: Amministratore ambiente
(
roles/apigee.environmentAdmin) nell'ambiente di destinazione e Lettore API (roles/apigee.apiReaderV2) a livello di progetto. - Per creare il prodotto API, lo sviluppatore e l'app che generano la chiave API
nella parte 2, passaggio 6: amministratore API
(
roles/apigee.apiAdmin) e amministratore sviluppatore (roles/apigee.developerAdmin). Per l'elenco completo dei ruoli, vedi Ruoli Apigee.
- Per importare (creare) un proxy API: il ruolo Amministratore API
(
Parte 1: crea un proxy API semplice
In questa sezione crei un proxy che inoltra le richieste al servizio di destinazione simulato Apigee e applica un limite di frequenza.
Passaggio 1: crea il modello
Un modello è il file di cui esegui il deployment. Definisce il percorso di base, le route e la destinazione di backend del proxy ed elenca le funzionalità da includere.
Crea una directory per il proxy, quindi crea un file denominato
hello-proxy.yaml:
gateway: apigee schemaVersion: 1.0.0 name: hello-proxy type: template description: A simple proxy to the Apigee mock target, protected by a rate limit. features: - spike-arrest.yaml endpoints: - name: default basePath: /hello routes: - name: default target: default targets: - name: default url: https://mocktarget.apigee.net
Questo modello definisce:
- Un endpoint con il percorso di base
/hello. I client chiamano il proxy in questo percorso. - Una route che invia le richieste alla destinazione denominata
default. - Un target che indirizza all'URL di backend.
- Una funzionalità,
spike-arrest.yaml, che creerai successivamente.
Passaggio 2: crea la funzionalità
Una funzionalità è un'unità di configurazione riutilizzabile che contiene le policy. Un modello non può contenere direttamente policy, quindi la policy di limitazione della frequenza si trova in una funzionalità.
Nella stessa directory del modello, crea un file denominato spike-arrest.yaml:
gateway: apigee schemaVersion: 1.0.0 name: spike-arrest displayName: Spike Arrest type: feature description: Protects the backend by smoothing traffic spikes. categories: - traffic parameters: - name: RATE displayName: RATE description: Maximum request rate, for example 30ps (per second) or 100pm (per minute). default: 30ps examples: - 30ps - 100pm defaultEndpoint: name: default flows: - name: PreFlow mode: Request steps: - name: SA-SpikeArrest policies: - name: SA-SpikeArrest type: SpikeArrest content: SpikeArrest: metadata: name: SA-SpikeArrest enabled: "true" continueOnError: "false" DisplayName: SA-SpikeArrest Rate: "{RATE}"
Questa funzionalità:
- Definisce una policy SpikeArrest che limita il tasso di richieste.
- Utilizza
defaultEndpoint.flowsper aggiungere la policy alla richiesta PreFlow, in modo che venga eseguita su ogni richiesta. - Dichiara un parametro,
RATE, il cui valore predefinito (30ps) viene sostituito a{RATE}quando il proxy viene compilato.
Passaggio 3: importa il proxy
Importa il modello per creare una revisione del proxy API. Esegui questo comando dalla directory che contiene i file:
gcloud beta apigee apis import hello-proxy \
--from-template=hello-proxy.yaml \
--organization=ORGLa CLI compila il modello e la relativa funzionalità in un bundle proxy API, lo carica e stampa la nuova revisione del proxy. L'importazione crea una revisione, ma non la esegue il deployment.
Passaggio 4: esegui il deployment del proxy
Esegui il deployment della revisione in un ambiente:
gcloud apigee apis deploy \
--api=hello-proxy \
--environment=ENV \
--organization=ORGPer impostazione predefinita, questo comando esegue il deployment dell'ultima revisione. Per eseguire il deployment di una revisione specifica, passa il relativo numero come primo argomento, ad esempio gcloud apigee apis deploy 1 --api=hello-proxy --environment=ENV.
Se è già stato eseguito il deployment di un proxy diverso nello stesso percorso di base, aggiungi
--override per sostituirlo senza tempi di inattività.
Passaggio 5: chiama il proxy
Per chiamare il proxy di cui è stato eseguito il deployment sulla rete, il tuo ambiente deve essere collegato a un gruppo di ambienti con un nome host instradabile. Se hai appena creato la tua organizzazione, verifica che sia configurata prima di chiamare il proxy. Consulta Informazioni sugli ambienti e sui gruppi di ambienti.
Trova il nome host di un gruppo di ambienti che contiene il tuo ambiente:
- Nella console Google Cloud , vai a Apigee > Management > Environments (Ambienti).
- Seleziona la scheda Gruppi di ambienti.
- Trova il gruppo di ambienti che contiene il tuo ambiente e copia un valore dalla colonna Nomi host.
Chiama il proxy a quel nome host, utilizzando il percorso di base del modello:
curl https://HOSTNAME/hello
Sostituisci HOSTNAME con il nome host che hai copiato. Una risposta positiva proviene dal servizio di destinazione simulato.
Parte 2: Crea un gateway AI per Gemini
Questa sezione crea un proxy più completo: un gateway AI che inoltra le richieste a un modello Gemini su Vertex AI, applica un limite di frequenza e richiede una chiave API. Utilizza un modello, tre funzionalità e un account di servizio.
A differenza del semplice proxy nella Parte 1, questo proxy
chiama un servizio Google Cloud (Vertex AI). La funzionalità gemini-target
utilizza auth: GoogleAccessToken, pertanto Apigee allega un token OAuth di Google a ogni richiesta a Vertex AI. Questo token viene emesso per un
service account che crei e fornisci quando implementi il
proxy, quindi questa parte aggiunge un passaggio per creare il account di servizio
(passaggio 3).
Passaggio 1: crea il modello
Crea un file denominato ai-gateway.yaml:
gateway: apigee schemaVersion: 1.0.0 name: ai-gateway type: template description: AI gateway that fronts a Gemini model with throttling and API key enforcement. features: - spike-arrest.yaml - verify-api-key.yaml - gemini-target.yaml endpoints: - name: gemini basePath: /v1/gemini routes: - name: default target: gemini
Passaggio 2: crea le funzionalità
Nella stessa directory, crea i tre file delle funzionalità.
Riutilizza la funzionalità spike-arrest.yaml della
Parte 1.
Crea verify-api-key.yaml per richiedere una chiave API nell'intestazione
x-api-key:
gateway: apigee schemaVersion: 1.0.0 name: verify-api-key displayName: Verify API Key type: feature description: Requires a valid API key in the x-api-key request header. categories: - security defaultEndpoint: name: default flows: - name: PreFlow mode: Request steps: - name: VA-VerifyAPIKey policies: - name: VA-VerifyAPIKey type: VerifyAPIKey content: VerifyAPIKey: metadata: name: VA-VerifyAPIKey enabled: "true" continueOnError: "false" DisplayName: VA-VerifyAPIKey APIKey: metadata: ref: request.header.x-api-key
Crea gemini-target.yaml per indirizzare a un modello Gemini,
autenticato con un token di accesso Google:
gateway: apigee schemaVersion: 1.0.0 name: gemini-target displayName: Gemini Target type: feature description: Routes requests to a Gemini model on Vertex AI, authenticated with a Google access token. categories: - llm targets: - name: gemini url: https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/gemini-2.5-flash:generateContent auth: GoogleAccessToken scopes: - https://www.googleapis.com/auth/cloud-platform
Sostituisci PROJECT_ID con l'ID progetto Google Cloud e REGION con la regione Vertex AI che utilizzi (ad esempio us-central1). Questa funzionalità
utilizza auth: GoogleAccessToken in modo che Apigee alleghi un
token di accesso Google a ogni richiesta a Vertex AI.
I modelli non sono disponibili in tutte le località e l'URL dipende dalla
località che utilizzi. L'URL precedente è il modulo regionale, che funziona
per un modello pubblicato da una regione specifica, ad esempio
gemini-2.5-flash in us-central1. Gli altri modelli vengono pubblicati solo dall'endpoint globale, che utilizza un host diverso e locations/global:
url: https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL:generateContent
Per trovare le località supportate da un modello, consulta Località dell'AI generativa su Vertex AI.
Passaggio 3: crea un account di servizio per il proxy
Poiché la funzionalità gemini-target utilizza
auth: GoogleAccessToken, il proxy di cui è stato eseguito il deployment chiama Vertex AI come
service account. Crea questo account di servizio, concedigli l'accesso a Vertex
AI e consenti all'agente di servizio Apigee di utilizzarlo. Fornisci questo account di servizio
quando esegui il deployment del proxy nel passaggio 5. Per maggiori
dettagli, vedi
Utilizzo dell'autenticazione
Google.
- Crea un account di servizio gestito dall'utente nello stesso progetto Google Cloud dell'organizzazione Apigee. (Il account di servizio predefinito di Compute Engine
non è accettato.) Per altri modi per crearne uno, vedi
Creazione
e gestione dei service account.
gcloud iam service-accounts create SA_NAME \ --project=PROJECT_ID \ --display-name="Apigee AI gateway"In questo modo viene creato il account di servizio
SA_NAME@PROJECT_ID.iam.gserviceaccount.com. - Concedi al account di servizio l'accesso al backend che chiama. Per una destinazione Vertex AI, concedi il ruolo Vertex AI User (
roles/aiplatform.user):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"Se il criterio IAM del progetto contiene già associazioni di ruoli condizionali, aggiungi
--condition=Nonea questo comando. - Consenti all'agente di servizio Apigee di generare token per il account di servizio
concedendogli il ruolo Creatore token service account
(
roles/iam.serviceAccountTokenCreator) nel account di servizio:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"Per trovare PROJECT_NUMBER, esegui
gcloud projects describe PROJECT_ID --format='value(projectNumber)'.
Passaggio 4: importa il proxy
Importa il modello per creare una revisione del proxy API:
gcloud beta apigee apis import ai-gateway \
--from-template=ai-gateway.yaml \
--organization=ORGPrendi nota del numero di revisione nell'output comando, ti servirà nel
Passaggio 5. Per stampare solo il numero di revisione, aggiungi
--format="value(revision)" al comando di importazione.
Passaggio 5: esegui il deployment del proxy con il account di servizio
L'implementazione del gateway AI differisce dal semplice proxy della Parte 1 in due modi:
- Devi fornire il service account che hai creato nel
passaggio 3. Se esegui il deployment senza uno di questi file, il deployment non riesce e viene visualizzato un errore
MISSING_SERVICE_ACCOUNT. - Devi eseguire il deployment in un ambiente intermedio o completo.
Questo proxy utilizza un criterio estensibile, che un ambiente Base non supporta. Il deployment in un ambiente di questo tipo non va a buon fine e viene visualizzato l'errore
Extensible proxy can not be deployed to a base environment
. Consulta Tipi di ambiente Apigee.
UI Apigee:esegui il deployment del proxy e, quando ti viene chiesto un account di servizio,
inserisci
SA_NAME@PROJECT_ID.iam.gserviceaccount.com.
Per una descrizione dei passaggi, consulta la sezione
Deployment di un proxy API.
API Deployment:chiama l'API
deployments, passando il account di servizio come parametro di query serviceAccount. Sostituisci REVISION con il numero di revisione del
passaggio 4:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -X POST \ "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/ai-gateway/revisions/REVISION/deployments?serviceAccount=SA_NAME@PROJECT_ID.iam.gserviceaccount.com"
La richiesta di deployment viene restituita immediatamente; il deployment è asincrono. Esegui il polling dello stato di deployment della revisione, che indica PROGRESSING finché non diventa READY:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/ai-gateway/revisions/REVISION/deployments"
Quando il proxy viene compilato, le funzionalità spike-arrest e
verify-api-key aggiungono i loro criteri al PreFlow della richiesta
(prima limitazione di frequenza, poi il controllo della chiave API), mentre la funzionalità gemini-target
aggiunge il backend Vertex AI. Al termine del deployment, il proxy
si autentica in Vertex AI comeaccount di serviziot.
Passaggio 6: ottieni una chiave API
La funzionalità verify-api-key rifiuta qualsiasi richiesta che non
contenga una chiave API valida, quindi devi disporre di una chiave prima di poter chiamare il proxy. Una chiave API è una credenziale di un'app per sviluppatori associata a un prodotto API contenente questo proxy. Completa le seguenti attività, descritte in Panoramica della pubblicazione:
- Crea
un prodotto API che includa il proxy
ai-gatewaye l'ambiente in cui è stato eseguito il deployment. - Registra uno sviluppatore di app.
- Registra un'app per sviluppatori associata a quel prodotto API.
La registrazione dell'app genera la chiave. Per recuperarlo, consulta la sezione Visualizzazione di una chiave API e di un secret.
Passaggio 7: chiama il proxy
Trova il nome host del gruppo di ambienti come descritto nella
Parte 1, passaggio 5, quindi chiama il proxy nel percorso di base
/v1/gemini. Passa la chiave API nell'intestazione x-api-key e invia un corpo della richiesta Gemini generateContent:
curl -X POST https://HOSTNAME/v1/gemini \
-H "x-api-key: API_KEY" \
-H "Content-Type: application/json" \
-d '{"contents":[{"role":"user","parts":[{"text":"Say hello in one sentence."}]}]}'Sostituisci HOSTNAME con il nome host del gruppo di ambienti e API_KEY con la chiave del passaggio 6. Una
risposta riuscita è l'output JSON del modello. Se ometti la chiave, si verifica un errore di autorizzazione
della policy VerifyAPIKey, che conferma
che la funzionalità verify-api-key è attiva. Per altri modi per
passare una chiave, consulta
Invio
di una richiesta con una chiave API valida.
Passaggi successivi
- Riferimento per la configurazione YAML del proxy API
- Configurazione di un proxy con YAML
- Deployment dei proxy API
- Panoramica della pubblicazione