Skip to main content
Questa pagina illustra un modo per eseguire il gateway delle app Claude su AWS. La configurazione è un esempio funzionante per infrastrutture gestite dal cliente piuttosto che una distribuzione di produzione supportata; utilizzatela per vedere come i componenti si incastrano insieme prima di adattarla al vostro ambiente. Per i requisiti indipendenti dalla piattaforma, consultate la guida alla distribuzione.
Questo esempio esegue il provisioning del gateway delle app Claude su AWS con Amazon Bedrock come upstream del modello, utilizzando Amazon ECS su AWS Fargate o Amazon EKS per il calcolo. Okta è il provider di identità (IdP) di esempio, ma qualsiasi IdP conforme a OpenID Connect (OIDC) funziona; consultate Configurazione del provider di identità per i dettagli specifici di ogni IdP.
Bedrock non è l’unico upstream Claude su AWS. Il gateway supporta anche Claude Platform su AWS, l’API Claude gestita da Anthropic con autenticazione AWS e fatturazione AWS Marketplace, al posto di Bedrock o insieme ad esso. La sua voce upstream, le credenziali e i permessi IAM differiscono da quelli specifici di Bedrock in questa pagina; il riferimento upstream Claude Platform su AWS copre cosa cambia, e il resto di questa pagina si applica invariato.

Architettura

Diagramma del gateway delle app Claude su AWS: i client Claude Code si connettono tramite HTTPS a un Application Load Balancer interno che sta davanti al gateway (ECS Fargate o EKS), che viene eseguito in subnet private insieme a un'istanza Amazon RDS per PostgreSQL per lo stato della sessione. Il gateway accede gli utenti tramite OIDC rispetto all'IdP aziendale, legge i segreti da AWS Secrets Manager, inoltra le richieste del modello ad Amazon Bedrock utilizzando il suo ruolo IAM e estrae la sua immagine da Amazon ECR al momento della distribuzione.

L'architettura di esempio, con Amazon Bedrock come upstream del modello. Un upstream Claude Platform su AWS occupa la stessa posizione.

Il gateway viene eseguito come endpoint HTTPS privato sulla vostra rete a cui gli sviluppatori accedono tramite il vostro IdP. Le loro sessioni Claude Code raggiungono i modelli Claude su Amazon Bedrock attraverso il ruolo IAM del gateway, quindi nessuna credenziale del modello finisce sulle macchine degli sviluppatori. La configurazione di riferimento esegue il provisioning di:
  • Servizio Amazon ECS su AWS Fargate o Amazon EKS Deployment che esegue il contenitore del gateway
  • Repository Amazon ECR per l’immagine del gateway
  • Istanza Amazon RDS per PostgreSQL in subnet private, non accessibile pubblicamente, per lo store del gateway
  • Segreti AWS Secrets Manager per la chiave di firma JWT, il segreto del client OIDC e l’URL di Postgres
  • Ruolo IAM con bedrock:InvokeModel, bedrock:InvokeModelWithResponseStream e bedrock:CountTokens, allegato come ruolo di attività ECS o associato tramite IAM Roles for Service Accounts (IRSA) su EKS
  • Application Load Balancer interno per HTTPS

Prerequisiti

La procedura dettagliata crea le risorse proprie del gateway, ma si basa su infrastrutture di rete e identità che già possedete. Prima di iniziare, avete bisogno di:

Impostare le variabili di ambiente

Ogni comando in questa pagina legge quattro valori dalla vostra shell: AWS_REGION, ACCOUNT_ID, VPC_ID e PRIVATE_SUBNETS. Scegliete una regione US dove Bedrock serve i modelli Claude di cui avete bisogno. La procedura dettagliata si basa sul catalogo dei modelli integrato del gateway, che si risolve in profili di inferenza us.anthropic.*, e la politica IAM concede quegli ARN. In una regione non-US, aggiungete un blocco models: con gli ID del profilo di inferenza di quella geo e cambiate il prefisso ARN della politica IAM per corrispondere. Se non avete l’ID VPC a portata di mano, elencate i vostri VPC con aws ec2 describe-vpcs, quindi elencate le subnet di quel VPC per trovare due private in diverse zone di disponibilità:
Esportate tutti e quattro prima di continuare:

Eseguire il deploy del gateway

I passaggi seguenti eseguono il provisioning del deploy completo con comandi aws.
1

Creare i gruppi di sicurezza

Tre gruppi di sicurezza concatenano il percorso del traffico: la tua rete aziendale raggiunge il load balancer sulla porta 443, il load balancer raggiunge il gateway sulla porta 8080 e il gateway raggiunge Postgres sulla porta 5432. Nient’altro è raggiungibile. Il modo in cui li colleghi dipende dal percorso di calcolo:
  • Su ECS Fargate, il passaggio di deploy collega $ALB_SG al load balancer e $GW_SG al servizio.
  • Su EKS, AWS Load Balancer Controller crea il proprio gruppo di sicurezza frontend per l’ALB, quindi $ALB_SG e $GW_SG non vengono utilizzati: l’annotazione inbound-cidrs del passaggio di deploy limita il listener alla tua rete aziendale e il gruppo di sicurezza del database ammette invece il gruppo di sicurezza del cluster.
2

Creare i ruoli IAM e inviare il modulo del caso d'uso

Il gateway viene eseguito con un ruolo di attività dedicato il cui unico permesso è invocare i modelli Claude su Bedrock. Secondo il riferimento upstream Bedrock, la policy deve coprire sia gli ARN dei profili di inferenza cross-region sia gli ARN dei modelli di base sottostanti:
ECS ha anche bisogno di un ruolo di esecuzione, che l’agente ECS stesso utilizza per scaricare l’immagine da ECR e iniettare i valori di Secrets Manager creati in seguito. È separato dal ruolo di attività che l’AWS SDK del gateway utilizza in fase di esecuzione:
La policy specifica un ARN per ogni segreto anziché un semplice wildcard gateway-*, che in un account condiviso corrisponderebbe anche a segreti non correlati; il suffisso finale -?????? corrisponde esattamente al suffisso casuale di sei caratteri che Secrets Manager aggiunge all’ARN di ogni segreto. Un -* finale sarebbe un semplice glob di prefisso e corrisponderebbe anche a nomi più lunghi come gateway-postgres-url-prod.La policy IAM concede al gateway il permesso di chiamare Bedrock, e Bedrock abilita l’accesso ai modelli per impostazione predefinita nelle regioni commerciali. Il vincolo rimanente a livello di account è il modulo del caso d’uso una tantum di Anthropic: se nessuno nel tuo account lo ha inviato, apri la console Amazon Bedrock, seleziona un modello Anthropic dal catalogo dei modelli e compila il modulo. L’accesso viene concesso immediatamente dopo l’invio; consulta Claude Code su Amazon Bedrock per il modulo AWS Organizations e i permessi IAM di cui ha bisogno chi lo invia.Il percorso EKS riutilizza entrambi i documenti di policy su un ruolo IRSA al posto dei due ruoli ECS; consulta il passaggio di deploy.
3

Eseguire il provisioning di Amazon RDS per PostgreSQL

L’istanza esegue Postgres 16 nelle subnet private, senza indirizzo pubblico e con la crittografia dell’archiviazione attivata.Per prima cosa, crea il gruppo di subnet che colloca il database nelle subnet private e un gruppo di parametri con rds.force_ssl=1 in modo che il server rifiuti le connessioni in testo semplice. La versione del motore viene fissata una sola volta perché la famiglia del gruppo di parametri deve corrispondere alla versione principale del motore eseguita dall’istanza:
Quindi crea l’istanza con una password principale generata:
L’argomento letterale --master-user-password è visibile nella tabella dei processi e nei log di audit/EDR mentre il comando è in esecuzione, la stessa esposizione trattata nella nota del passaggio dei segreti. Su un host condiviso o monitorato, passa invece la password tramite --cli-input-json da un file 0600, come fa il setup.sh del bundle.Attendi che l’istanza sia disponibile, il che può richiedere diversi minuti, quindi leggi il suo endpoint privato e componi la stringa di connessione che il gateway utilizzerà:
sslmode=verify-full fa sì che il gateway verifichi la catena e il nome host del certificato del server RDS, e non si limiti a crittografare. L’ancora di fiducia è il bundle di certificati AWS RDS, che il passaggio di build dell’immagine più avanti copia in /etc/claude/rds-global-bundle.pem e considera attendibile tramite NODE_EXTRA_CA_CERTS. Non aggiungere all’URL un parametro sslrootcert= in stile libpq: il driver del gateway legge solo sslmode dalla stringa di query e inoltrerebbe sslrootcert a Postgres come parametro di avvio, che il server rifiuta.Il servizio ECS o i pod EKS devono essere eseguiti in questo VPC per poter raggiungere l’endpoint privato dell’istanza, e il gruppo di sicurezza claude-gateway-db ammette solo il gruppo di sicurezza del gateway.
4

Scrivere gateway.yaml

Il blocco upstreams punta a Bedrock con auth: {}, quindi il gateway si autentica tramite la catena di credenziali predefinita di AWS, dal ruolo di attività su ECS o dal ruolo IRSA su EKS. Consulta il riferimento di configurazione per ogni campo.Due campi listen descrivono ciò che sta davanti al gateway:
  • public_url: l’origine esterna https://, obbligatoria per qualsiasi bind non di loopback; consulta il riferimento listen. Il gateway costruisce il redirect_uri dell’IdP e il proprio documento di discovery solo da questo valore, mai dalle intestazioni X-Forwarded-*.
  • trusted_proxies: gli intervalli di origine del front end. Il gateway considera X-Forwarded-For solo quando il peer TCP è in questo elenco, quindi percorre la catena oltre gli hop attendibili, in modo che i rate limit di accesso per IP e gli eventi di audit registrino gli IP degli sviluppatori anziché quelli del load balancer.
Su entrambi i percorsi il front end è un ALB interno, creato direttamente o da AWS Load Balancer Controller, e i nodi di un ALB prendono gli indirizzi dalle subnet a cui è collegato, quindi imposta trusted_proxies sui CIDR di quelle subnet. In questo modo ogni host in quelle subnet viene considerato un proxy attendibile. Evita che l’origine di ingresso dell’ALB, il tuo CIDR aziendale, si sovrapponga a esse, e non condividere le subnet con carichi di lavoro non attendibili che potrebbero falsificare gli IP dei client tramite X-Forwarded-For.L’attributo di conservazione della porta del client dell’ALB, routing.http.xff_client_port.enabled, può restare su entrambe le impostazioni: se è attivo, l’ALB scrive il client come 203.0.113.7:54321 o [2001:db8::1]:54321, e il gateway legge entrambi i formati scartando la porta.
gateway.yaml
Solo il blocco oidc è specifico di Okta. Per utilizzare invece Microsoft Entra ID, imposta issuer su https://login.microsoftonline.com/<tenant-id>/v2.0, rimuovi userinfo_fallback e lo scope groups, e tieni presente che Entra emette gli Object ID dei gruppi anziché i nomi, quindi managed.policies deve corrispondere ai GUID, oppure agli App Roles con oidc.groups_claim: roles. Consulta Configurazione del provider di identità.
5

Archiviare i segreti in AWS Secrets Manager

Crea tre segreti; il ruolo di esecuzione del passaggio IAM può già leggerli:
Annota l’ARN stampato da ogni chiamata; la definizione di attività ECS fa riferimento ai segreti tramite ARN.
Gli argomenti letterali --secret-string sono visibili nella tabella dei processi e nei log di audit/EDR mentre ogni comando è in esecuzione. Su un host condiviso o monitorato, inserisci invece il valore in un file 0600 e passa --secret-string file://<path>. Il setup.sh del bundle tiene allo stesso modo i valori dei segreti fuori dagli argv dei processi, passando file temporanei 0600 a --cli-input-json.
A differenza dei segreti, gateway.yaml non contiene valori segreti, perché ogni credenziale viene risolta all’avvio tramite l’espansione ${VAR} o ${file:...}. Il modo in cui tutto arriva al container varia in base al percorso:
  • Su ECS, la build del passaggio successivo copia gateway.yaml nell’immagine in /etc/claude/gateway.yaml, e la definizione di attività inietta i tre segreti come variabili d’ambiente tramite il suo campo secrets, quindi lo YAML fa riferimento a ${GATEWAY_JWT_SECRET}, ${OIDC_CLIENT_SECRET} e ${GATEWAY_POSTGRES_URL}.
  • Su EKS, monta gateway.yaml da una ConfigMap e i segreti come file in /secrets, referenziati come ${file:/secrets/...}. Ricava i Kubernetes Secrets da Secrets Manager con External Secrets Operator o con il provider AWS del driver CSI Secrets Store, oppure creali direttamente con kubectl.
6

Eseguire la build e il push dell'immagine su Amazon ECR

Esegui la build dell’immagine secondo i requisiti dell’immagine del container, posizionando il binario glibc linux-x64 in ./claude nel contesto di build. Scrivi il tuo Dockerfile secondo questi requisiti oppure parti dal Dockerfile del bundle, che copia il gateway.yaml compilato nei passaggi precedenti nell’immagine in /etc/claude/gateway.yaml. Su ECS è questa copia incorporata a portare la configurazione nel container, ed è per questo che la build viene dopo la scrittura del file. Il percorso EKS monta invece gateway.yaml da una ConfigMap al momento del deploy, quindi lì la copia incorporata non viene utilizzata.L’immagine contiene anche il bundle di certificati AWS RDS come ancora di fiducia per il sslmode=verify-full della stringa di connessione, quindi scaricalo prima nel contesto di build. AWS aggiorna periodicamente il bundle (vengono aggiunte nuove CA regionali), quindi scaricalo a ogni build anziché fissarne un checksum o eseguirne il commit:
I requisiti dell’immagine del container non coprono il bundle, quindi se scrivi il tuo Dockerfile, aggiungi le due righe che lo copiano e lo rendono attendibile; il Dockerfile del bundle le include già entrambe:
Crea il repository ECR ed esegui l’accesso di Docker a esso. I tag immutabili fanno sì che il tag <version> fissato nel passaggio di deploy non possa essere in seguito reindirizzato silenziosamente a un’immagine diversa:
Esegui la build e il push dell’immagine. La definizione di attività più avanti esegue linux/amd64, quindi la piattaforma deve corrispondere qui; per Fargate su ARM64 (Graviton), esegui invece la build per linux/arm64 con il binario linux-arm64 e imposta cpuArchitecture su ARM64:
7

Eseguire il deploy

Crea il cluster e un gruppo di log per lo stderr del gateway, che contiene sia gli eventi di audit sia i log operativi. La conservazione richiede una chiamata separata, e senza di essa CloudWatch conserva i log per sempre; allinea i 90 giorni alla tua policy di conservazione dell’audit:
Scrivi la definizione di attività. Il ruolo di attività ha il permesso per Bedrock e il ruolo di esecuzione inietta i segreti; usa gli ARN dei segreti del passaggio Secrets Manager:
claude-gateway-task.json
Registrala:
Metti davanti un ALB interno con un gruppo di destinazione che verifica lo stato del gateway. --ip-address-type ipv4 è importante: un ALB interno dual-stack pubblica record AAAA di intervallo pubblico, che il controllo della rete privata di /login rifiuta:
Aggiungi il listener HTTPS. --ssl-policy fissa un livello minimo di TLS moderno, poiché ometterlo fa ricadere sulla policy predefinita legacy ELBSecurityPolicy-2016-08, che accetta ancora TLS 1.0/1.1.Per impostazione predefinita, l’ALB chiude una connessione dopo 60 secondi senza dati. I ping di keepalive del gateway mantengono i flussi entro questo valore predefinito, quindi aumentare il timeout aggiunge margine rispetto alla cadenza dei ping; la riga di Risoluzione dei problemi sui flussi interrotti descrive il meccanismo e i gateway meno recenti. I comandi seguenti aggiungono il listener e aumentano il timeout:
Crea il servizio. Il circuit breaker del deploy riporta all’ultimo stato stabile un deploy le cui attività continuano a fallire, a causa di un’immagine difettosa o di una configurazione che non si avvia, anziché rilanciare all’infinito attività che falliscono:
Il periodo di tolleranza di 60 secondi dà a un’attività avviata a freddo il tempo di scaricare l’immagine, connettersi allo store e rispondere al primo controllo di stato prima che ECS inizi a contare i fallimenti a carico del deploy.Il controllo di stato del gruppo di destinazione su GET /readyz verifica che lo store sia raggiungibile, quindi un’attività che non riesce a raggiungere Postgres non entra mai in rotazione. Per far sì che le attività continuino a superare il controllo durante una breve interruzione del database, come un failover RDS, imposta store.readiness_grace_seconds come descritto in Comportamento in caso di interruzione, che tratta anche l’alternativa /healthz.Le attività vengono eseguite in subnet private senza IP pubblico, quindi tutto il traffico in uscita (verso Bedrock, il tuo IdP, Secrets Manager, ECR e CloudWatch Logs) passa attraverso il gateway NAT. Per tenere il traffico Bedrock fuori dal percorso pubblico, crea un endpoint VPC di interfaccia bedrock-runtime e punta il base_url dell’upstream a esso, come mostrato nel riferimento upstream Bedrock; l’IdP ha comunque bisogno di uscita verso Internet.Per finire, fornisci agli sviluppatori un nome host risolvibile privatamente: in una zona ospitata privata di Route 53, crea un alias dal nome DNS interno del gateway all’ALB e imposta listen.public_url su quel nome host. Il nome *.elb.amazonaws.com dell’ALB si risolve in indirizzi privati su un ALB interno, ma non può usare il tuo certificato ACM, quindi usa un nome tuo.Aggiorna l’URI di reindirizzamento autorizzato del client OAuth a <public_url>/oauth/callback prima del primo accesso. Dopo aver modificato public_url, esegui di nuovo la build e il push dell’immagine con un nuovo tag, registra una nuova revisione della definizione di attività ed esegui di nuovo il deploy. Su ECS l’impostazione si trova nel gateway.yaml incorporato nell’immagine, e il gateway costruisce la propria origine pubblica solo da quell’impostazione, ignorando X-Forwarded-Host e X-Forwarded-Proto. X-Forwarded-For viene considerato per gli IP dei client solo quando listen.trusted_proxies è impostato.
8

Distribuire l'URL del gateway ai computer degli sviluppatori

Il gateway è ora in esecuzione, ma gli sviluppatori non possono raggiungerlo da /login finché l’URL del gateway non è presente sui loro computer. Distribuisci lo snippet completo delle impostazioni gestite, con forceLoginMethod, forceLoginGatewayUrl e l’opt-in parentSettingsBehavior: "merge", su ogni dispositivo tramite MDM. Nel selettore di accesso non esiste un’opzione gateway che uno sviluppatore possa selezionare manualmente.

Riferimento Terraform

Il bundle complementare a examples/gateway/aws pacchetti questa pagina come codice:
  • setup.sh script la procedura dettagliata di provisioning sopra con gli stessi comandi aws, sul percorso ECS Fargate. È idempotente: le risorse esistenti vengono rilevate e saltate, quindi rieseguirlo è sicuro, e qualsiasi default può essere sovrascritto tramite variabile di ambiente. Voi create comunque il segreto del client OIDC Okta e il certificato ACM voi stessi: un’esecuzione senza di essi salta la distribuzione ECS/ALB, nomina gli input mancanti e stampa il comando create-secret; create entrambi e rieseguite. Il modulo del caso d’uso Bedrock e l’alias Route 53 vengono stampati come passaggi successivi piuttosto che eseguiti automaticamente, e il push MDM del client rimane un passaggio manuale da questa pagina.
  • gateway.yaml.example è il modello di configurazione dal passaggio gateway.yaml, con le chiavi opzionali incluse commentate. Copiatelo in gateway.yaml e sostituite ogni REPLACE_ME prima di compilare.
  • Dockerfile compila l’immagine di runtime dal binario precompilato linux-x64 e copia il vostro gateway.yaml compilato a /etc/claude/gateway.yaml, più il bundle di certificati AWS RDS che ancora la connessione sslmode=verify-full dello store. setup.sh scarica il bundle solo quando non è già nel contesto di compilazione; eliminate il file e ricompilate sotto un nuovo tag per raccogliere una rotazione CA di AWS. Il file di configurazione non contiene valori segreti, poiché ogni credenziale si risolve all’avvio tramite l’espansione ${VAR}. Una modifica della configurazione quindi significa una ricompilazione sotto un nuovo tag; setup.sh automatizza questo taggando le immagini con un hash del file.
  • terraform/ esegue il provisioning dello stesso ambito ECS Fargate in modo dichiarativo: i gruppi di sicurezza, i ruoli IAM, il repository ECR, l’istanza RDS, i segreti di Secrets Manager e il servizio ECS dietro l’ALB interno. Il VPC e le subnet private rimangono prerequisiti, passati come variabili. Terraform crea il repository ECR ma non compila l’immagine, e la definizione del servizio fa riferimento all’immagine, quindi l’apply è due passaggi: un apply mirato per il repository, quindi la compilazione e il push, quindi l’apply completo. Il terraform/README.md del bundle copre le variabili, lo stato remoto e lo smantellamento.
Come questa pagina, il bundle è un esempio funzionante per infrastrutture gestite dal cliente piuttosto che una distribuzione di produzione supportata; esaminate e adattate al vostro ambiente prima di affidarvi ad esso.

Troubleshooting

Per gli errori di avvio del gateway e di accesso, consultate la tabella di troubleshooting indipendente dalla piattaforma. Le voci sottostanti sono specifiche di AWS.

Telemetry

Il gateway ti fornisce metriche di utilizzo per sviluppatore senza alcuna configurazione OTEL per macchina. Claude Code emette metriche, log e tracce opzionali OpenTelemetry (OTLP); Monitorare l’utilizzo copre tutto ciò che il CLI segnala. Nelle sessioni in cui l’accesso è stato effettuato tramite /login, il CLI contrassegna ogni esportazione con gli attributi di identità IdP autenticati user.id, user.email e user.groups, in modo che l’utilizzo venga aggregato per sviluppatore. Il gateway stesso è un relay OTLP autenticato. Impostare telemetry.forward_to insieme a listen.public_url, e spingerà le impostazioni dell’esportatore OTEL a ogni client connesso e inoltrerà il loro traffico OTLP verbatim a ogni destinazione che elencate. Ogni destinazione acconsente a metriche, log e tracce indipendentemente, e l’impostazione predefinita è solo metriche; vedere il riferimento telemetry per i campi per segnale e i loro compromessi di sensibilità. Il gateway non memorizza nel buffer, non aggrega e non archivia telemetria, quindi il luogo in cui i dati arrivano dipende interamente dalla configurazione dell’esportatore del collector. La telemetria del client è disattivata per impostazione predefinita; configurare telemetry.forward_to è ciò che la attiva per gli sviluppatori connessi, e ogni client interattivo mostra una finestra di dialogo di approvazione della sicurezza per le impostazioni inviate, come descritto nel riferimento di configurazione. Su AWS, ogni segnale viene mappato a una destinazione come segue.

Client metrics, logs, and traces

Puntare telemetry.forward_to a un collector OpenTelemetry, come il AWS Distro for OpenTelemetry (ADOT) collector, ed esportare da lì ad Amazon CloudWatch, Amazon Managed Service for Prometheus, o qualsiasi backend OTLP. Eseguire il collector come servizio interno proprio raggiungibile su https://; il riferimento telemetry copre l’eccezione di loopback e CLAUDE_GATEWAY_ALLOW_LOOPBACK.

Gateway logs

Su ECS Fargate, nessuna configurazione aggiuntiva: il driver awslogs consegna stderr del gateway, che contiene i suoi eventi di audit e log operativi, al gruppo di log /ecs/claude-gateway creato sopra. Su EKS, i log dei pod non raggiungono CloudWatch per impostazione predefinita, quindi l’audit trail viene perso fino a quando non installate la raccolta dei log: il componente aggiuntivo Amazon CloudWatch Observability con acquisizione dei log dei container abilitata, o un DaemonSet Fluent Bit. Su entrambi i percorsi, interrogare i log con CloudWatch Logs Insights e guidare gli allarmi dai filtri metrici.

Container metrics

Abilitare Container Insights sul cluster con aws ecs update-cluster-settings --cluster claude-gateway --settings name=containerInsights,value=enabled per CPU, memoria e rete per attività. Su EKS, installare il componente aggiuntivo Amazon CloudWatch Observability.

Spend

La telemetria mostra l’utilizzo dopo il fatto; i limiti di spesa sono la vista e l’applicazione live per sviluppatore del gateway.

Attribuzione dei costi

Il gateway firma ogni richiesta Bedrock con il suo principale, il ruolo dell’attività ECS o il ruolo IRSA di EKS, quindi per impostazione predefinita AWS vede tutta quella spesa sotto un unico principale IAM. Ci sono due modi per dividerla nei dati di fatturazione di AWS, e si combinano.

Per sviluppatore con assume_role

Creare un secondo ruolo IAM che contiene le autorizzazioni Bedrock e si fida del principale del gateway, concedere a quel principale sts:AssumeRole su di esso, e impostare assume_role con session_name: email sull’upstream Bedrock. Il gateway assume quindi quel ruolo una volta per sviluppatore all’ora con il nome della sessione impostato sulla loro email e firma le loro richieste con il risultato. Richiede un gateway che esegue Claude Code v2.1.281 o successivo. Il ruolo può trovarsi anche in un altro account AWS: vedere Bedrock in un altro account AWS. In Terraform, accanto al ruolo dell’attività nel bundle Terraform:
Con assume_role impostato il gateway firma ogni chiamata Bedrock, la chiamata gratuita CountTokens per la misurazione della spesa inclusa, con le credenziali del ruolo assunto, quindi il principale del gateway ha bisogno di una politica Bedrock propria solo per un upstream senza assume_role. Poiché il gateway chiama STS al momento della richiesta, le subnet private hanno bisogno di un percorso verso sts.<region>.amazonaws.com. Il gateway NAT dai prerequisiti fornisce uno, così come un endpoint VPC dell’interfaccia STS che risponde per quel nome host. Ogni sviluppatore attivo costa una chiamata STS all’ora per replica del gateway. Le richieste di ogni sviluppatore raggiungono AWS come il principale arn:aws:sts::<account>:assumed-role/<role>/<email>. Per visualizzare la spesa per principale, utilizzare un’esportazione di fatturazione che includa i dati del principale IAM; la pagina allocazione dei costi del principale IAM di AWS spiega come abilitarla e quali strumenti di fatturazione la mostrano.

Per team con profili di inferenza dell’applicazione

Questo percorso utilizza solo le sezioni models e managed. Creare un profilo di inferenza dell’applicazione Bedrock per team e modello, taggare ogni profilo con il team, e attivare quel tag come tag di allocazione dei costi. Quindi fornire a ogni team il suo proprio id modello in gateway.yaml e fissare ogni gruppo IdP agli id del suo team:
Dire agli sviluppatori in un team fissato di avviare Claude Code con --model platform-claude-opus-4-8, utilizzando l’id del loro team, perché una sessione avviata senza di esso esegue il modello predefinito, che il gateway rifiuta per loro. Il gateway applica availableModels su ogni richiesta, non solo nel selezionatore di modelli, e la fatturazione di AWS raggruppa la spesa per il tag che hai attivato. Senza il catch-all match: {}, uno sviluppatore che non corrisponde a nessuna politica ottiene ogni modello nel catalogo e può fatturare il profilo di entrambi i team. I costi: la configurazione cresce con i team per i modelli, e il ruolo che firma le richieste Bedrock di questo upstream deve anche essere autorizzato a invocare gli ARN application-inference-profile/*. Quel ruolo è il principale del gateway, o con assume_role il ruolo che assume. Vedere pricing per come il misuratore di spesa proprio del gateway prezza questi id.

Passaggi successivi