Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Distribuzione diretta del codice per Python
La distribuzione diretta del codice ti consente di portare il tuo Python-based agente su Amazon Bedrock AgentCore Runtime semplicemente impacchettando il codice dell'agente e le sue dipendenze in un archivio di file .zip. Il tuo agente deve comunque rispettare i requisiti di AgentCore Runtime: disporre di un file .py con punto di ingresso che utilizzi l'@app.entrypointannotazione di Amazon Bedrock AgentCore Python SDK o implementi gli endpoint dei server POST e GET. /invocations /ping
Prerequisiti
Prima di iniziare, assicurati di disporre dei seguenti elementi:
-
AWS Account con credenziali configurate. Per configurare le AWS credenziali, consulta Configurazione e impostazioni dei file di credenziali nella CLI. AWS
-
Uv installato e Python 3.10+ installato
-
AWS Autorizzazioni: per creare e distribuire un agente con la AgentCore CLI, è necessario disporre delle autorizzazioni appropriate. Per ulteriori informazioni, consulta Usare la CLI. AgentCore
-
Accesso ai modelli: Amazon Bedrock consente l'accesso ai modelli di base per impostazione predefinita. Per utilizzare un modello non di base, segui i passaggi di accesso al modello.
Fase 1: Installare la CLI AgentCore
Installa la AgentCore CLI:
npm install -g @aws/agentcore
Fase 2: Crea il tuo progetto di agente
Crea un AgentCore progetto per il tutorial:
agentcore create \
--project-name DirectDeployProject \
--name DirectDeployAgent \
--language Python \
--framework Strands \
--model-provider Bedrock \
--memory none \
--build CodeZip
cd DirectDeployProject
Questo comando genera:
-
Codice agente con il framework selezionato
-
Un pyproject.toml file con le dipendenze necessarie
-
Un agentcore/agentcore.json file di configurazione
-
Un progetto di agentcore/cdk/ infrastruttura
Il generato pyproject.toml include le dipendenze AgentCore e Strands. Uv crea l'ambiente virtuale e il file di blocco durante la creazione del progetto.
Facoltativamente, esegui cd app/DirectDeployAgent && uv add aws-opentelemetry-distro && cd ../.. per abilitare le tracce di AgentCore osservabilità di Amazon Bedrock.
Fase 3: Esegui il test localmente
Assicurati che la porta 8080 sia libera prima di iniziare. Vedi Risoluzione dei problemi se la porta è già in uso.
Apri una finestra di terminale e avvia il tuo agente con il seguente comando:
agentcore dev --no-browser
Metti alla prova il tuo agente aprendo un'altra finestra del terminale e inserisci il seguente comando:
curl -X POST http://localhost:8080/invocations \
-H "Content-Type: application/json" \
-d '{"prompt": "Hello!"}'
Successo: dovresti vedere una risposta del tipo{"result": "Hello! I’m here to help…"}. Nella finestra del terminale in cui è in esecuzione l'agente, digitate Ctrl+C per arrestare l'agente.
Passaggio 4: abilita l'osservabilità per il tuo agente
Amazon Bedrock AgentCore Observability ti aiuta a tracciare, eseguire il debug e monitorare gli agenti ospitati in Runtime. AgentCore Per prima cosa abilita CloudWatch Transaction Search seguendo le istruzioni in Abilitazione dell'osservabilità del runtime di Amazon Bedrock AgentCore . Per osservare il tuo agente, consulta Visualizzare i dati di osservabilità per i tuoi agenti Amazon Bedrock. AgentCore
Fase 5: Distribuisci su Runtime e richiama AgentCore
Distribuisci il tuo agente utilizzando uno dei seguenti metodi:
Esempio
- AgentCore CLI
-
-
I passaggi seguenti consentono di distribuire il CodeZip progetto creato nella Fase 2. Per ulteriori informazioni, consulta Guida introduttiva all'interfaccia della riga di AgentCore comando. Uv è necessario per creare e impacchettare il progetto Python.
Dopo aver configurato l'agente utilizzandoagentcore create, usa il deploy comando per creare un pacchetto di distribuzione zip, caricarlo nel bucket specificato e distribuire l'agente.
agentcore deploy
Chiediamo all'agente di raccontare una barzelletta!
agentcore invoke "Tell me a joke"
La prima distribuzione richiede tempo per installare le dipendenze, ma i successivi aggiornamenti dell'agente ottimizzano questa situazione riutilizzando le dipendenze compresse
Gestione della configurazione
È possibile modificare la configurazione dell'agente in qualsiasi momento utilizzando i agentcore add comandi o modificando direttamente il file di agentcore/agentcore.json configurazione.
Il file di configurazione consente di aggiornare i parametri di distribuzione come la configurazione del VPC, i ruoli di esecuzione, i timeout delle sessioni e le impostazioni dell'autorizzazione OAuth.
- Interactive
-
-
Esegui agentcore per aprire la TUI, quindi seleziona deploy. La schermata di distribuzione mostra i progressi in tempo reale mentre convalida il progetto, sintetizza CloudFormation e fornisce le risorse: AWS
Al termine della distribuzione, utilizzalo agentcore invoke per testare il tuo agente.
- Custom zip + boto3
-
-
Per scaricare una ruota compatibile con AgentCore Runtime, usi l'opzione uv --python-platform pip. AgentCore Runtime supporta solo l'architettura del set di istruzioni arm64, esegui il seguente comando. Sostituisci --python 3.x con la versione del runtime Python che stai utilizzando.
uv pip install \
--python-platform aarch64-manylinux2014 \
--python-version 3.13 \
--target=deployment_package \
--only-binary=:all: \
-r pyproject.toml
Crea un file .zip con le librerie installate nella radice del progetto.
cd deployment_package
zip -r ../deployment_package.zip .
Aggiungi il main.py file e gli altri file del pacchetto alla radice del file .zip.
cd ..
zip deployment_package.zip main.py
Dopo aver creato il pacchetto di distribuzione .zip, puoi utilizzarlo per creare un nuovo AgentCore Runtime o aggiornarne uno esistente. Puoi distribuire il tuo pacchetto .zip utilizzando l'API AgentCore Runtime, la console Runtime e AWS l'interfaccia a AgentCore riga di comando. La AgentCore CLI si occuperà dei passaggi precedenti per creare .zip.
. La dimensione massima per un pacchetto di distribuzione .zip per AgentCore Runtime è 250 MB (compresso) e 750 MB (decompresso). Tieni presente che questo limite si applica alla dimensione combinata di tutti i file che carichi. Il AgentCore Runtime necessita dell'autorizzazione per leggere i file nel pacchetto di distribuzione. Nella notazione ottale delle autorizzazioni di Linux, AgentCore Runtime richiede 644 autorizzazioni per i file non eseguibili (rw-r—r--) e 755 autorizzazioni (rwxr-xr-x) per le directory e i file eseguibili. In Linux e macOS, utilizza il comando chmod per modificare le autorizzazioni file su file e directory nel pacchetto di implementazione. Ad esempio, per assegnare a un file non eseguibile chmod 644 <filepath> le autorizzazioni corrette, esegui il comando seguente,. Per modificare le autorizzazioni file in Windows, consulta Set, View, Change, or Remove Permissions on an Object nella documentazione di Microsoft Windows. +.. Se non concedi a AgentCore Runtime le autorizzazioni necessarie per accedere alle directory nel pacchetto di distribuzione, AgentCore Runtime imposta le autorizzazioni per tali directory su 755 (rwxr-xr-x).
Un archivio ZIP contenente le dipendenze di Linux arm64 deve essere caricato su S3 come prerequisito per Create Agent Runtime. Il codice seguente richiede che il bucket S3 specificato esista già. Segui la AWS documentazione qui riportata per creare un bucket usando boto3. Il codice boto3 che segue caricherà l'archivio di file .zip su un file s3 e creerà il runtime di Amazon Bedrock. AgentCore
import boto3
account_id = "your aws account id"
agent_name = "strands_10_23"
s3_client = boto3.client('s3', region_name='us-west-2')
print("Uploading deployment.zip to S3...")
s3_client.upload_file(
'deployment_package.zip', # archive on file system
f"bedrock-agentcore-code-{account_id}-us-west-2", # bucket name
f"{agent_name}/deployment_package.zip", # prefix
ExtraArgs={'ExpectedBucketOwner': account_id} # ownership check
)
print("Upload completed successfully!")
print(f"S3 Location: s3://bedrock-agentcore-code-{account_id}-us-west-2/{agent_name}/deployment_package.zip")
agentcore_client = boto3.client('bedrock-agentcore-control', region_name='us-west-2')
response = agentcore_client.create_agent_runtime(
agentRuntimeName=agent_name,
agentRuntimeArtifact={
'codeConfiguration': {
'code': {
's3': {
'bucket': f"bedrock-agentcore-code-{account_id}-us-west-2",
'prefix': f"{agent_name}/deployment_package.zip"
}
},
'runtime': 'PYTHON_3_13',
'entryPoint': ['opentelemetry-instrument', 'main.py']
} # if not adding otel dependency, remove opentelemetry-instrument from entrypoint array
},
networkConfiguration={"networkMode": "PUBLIC"},
roleArn=f"arn:aws:iam::{account_id}:role/AmazonBedrockAgentCoreSDKRuntime-us-west-2",
lifecycleConfiguration={
'idleRuntimeSessionTimeout': 300, # 5 min, configurable
'maxLifetime': 1800 # 30 minutes, configurable
},
)
print(f"Agent Runtime created successfully!")
print(f"Agent Runtime ARN: {response['agentRuntimeArn']}")
print(f"Status: {response['status']}")
Per ulteriori informazioni sull'invocazione di un agente a livello di codice, consulta Richiamare un agente a livello di codice. Richiama un agente a livello di codice
- console
-
-
Puoi distribuire il tuo agente utilizzando la console Amazon Bedrock con supporto di runtime gestito. AgentCore La console fornisce un'interfaccia intuitiva per il caricamento di file ZIP e la configurazione delle impostazioni dell'agente.
Per eseguire la distribuzione utilizzando la console, crea innanzitutto il pacchetto di distribuzione seguendo i passaggi nella scheda Custom zip + boto3 sopra riportata sopra.
Crea un agente tramite console
Per creare il tuo agente:
-
Dalla home page degli agenti, scegli Host Agent
-
Scegli la tua selezione di sorgenti:
-
Fonte S3: caricamento dal bucket S3
-
Caricamento locale: carica il file ZIP dal tuo computer
-
Modelli: utilizza modelli di agente predefiniti
-
Configura le impostazioni dell'agente:
-
Nome dell'agente
-
Versione di runtime (consigliata Python 3.13)
-
Punto di ingresso (ad es.) main.py
-
Ruolo di esecuzione (crearne uno nuovo o utilizzare esistente)
-
Scegli Create Agent da distribuire
Crea endpoint
Scegli Create Endpoint per creare un nuovo endpoint per il tuo agente. Il nome dell'endpoint e la versione associata saranno precompilati.
Endpoint del test
Seleziona un endpoint e scegli Test Endpoint per passare a quello per il Playground/Sandbox test.
Requisiti del ruolo di esecuzione
L'agente richiede un ruolo di esecuzione con le autorizzazioni appropriate. Per informazioni dettagliate sui ruoli e le autorizzazioni di esecuzione, consulta Autorizzazioni AgentCore di runtime. Il ruolo di esecuzione deve includere le autorizzazioni di AgentCore runtime di base di Amazon Bedrock, le autorizzazioni di accesso S3 per il pacchetto di distribuzione e le autorizzazioni Logs per l'osservabilità. CloudWatch
Passaggio 6: interruzione della sessione, dell'aggiornamento o della pulizia
Interrompi la sessione di runtime, aggiorna o ripulisci il tuo agente utilizzando uno dei seguenti metodi:
Esempio
- AgentCore CLI
-
-
Per aggiornare AgentCore Runtime precedentemente distribuito, esegui:
agentcore deploy
Per interrompere una sessione in esecuzione prima di quella configurabile IdleRuntimeSessionTimeout (impostazione predefinita a 15 minuti) e risparmiare su eventuali costi irreversibili, utilizza l'operazione API. StopRuntimeSession La AgentCore CLI attualmente non supporta l'interruzione diretta delle sessioni.
Per eliminare tutte le risorse relative a un AgentCore Runtime, rimuovi prima tutte le risorse e poi esegui l'implementazione per eliminare le AWS risorse:
agentcore remove all
agentcore deploy
- boto3
-
-
Il codice boto3 che segue aggiornerà un Runtime. AgentCore
import boto3
account_id = "your aws account id"
agent_name = "strands_10_23"
s3_client = boto3.client('s3', region_name='us-west-2')
print("Uploading deployment.zip to S3...")
s3_client.upload_file(
'deployment_package.zip', # archive on file system
f"bedrock-agentcore-code-{account_id}-us-west-2", # bucket name
f"{agent_name}/deployment_package.zip", # prefix
ExtraArgs={'ExpectedBucketOwner': account_id} # ownership check
)
print("Upload completed successfully!")
print(f"S3 Location: s3://bedrock-agentcore-code-{account_id}-us-west-2/{agent_name}/deployment_package.zip")
bedrock_agentcore_client = boto3.client('bedrock-agentcore-control', region_name='us-west-2')
response = bedrock_agentcore_client.update_agent_runtime(
agentRuntimeId='<your-agent-id>',
agentRuntimeArtifact={
'codeConfiguration': {
'code': {
's3': {
'bucket': f"bedrock-agentcore-code-{account_id}-us-west-2",
'prefix': f"{agent_name}/deployment_package.zip"
}
},
'runtime': 'PYTHON_3_13',
'entryPoint': ['opentelemetry-instrument', 'main.py']
} # if not adding otel dependency, remove opentelemetry-instrument from entrypoint array
},
networkConfiguration={"networkMode": "PUBLIC"},
roleArn=f"arn:aws:iam::{account_id}:role/AmazonBedrockAgentCoreSDKRuntime-us-west-2"
)
print(f"Agent Runtime updated successfully!")
print(f"Agent Runtime ARN: {response['agentRuntimeArn']}")
print(f"Status: {response['status']}")
Per interrompere la sessione in esecuzione prima di quella configurabile IdleRuntimeSessionTimeout (impostazione predefinita a 15 minuti) e risparmiare su eventuali costi eccessivi, utilizza il seguente codice boto3:
import boto3
agent_core_client = boto3.client('bedrock-agentcore', region_name='us-west-2')
response = agent_core_client.stop_runtime_session(
agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:account-id:runtime/agent-name-suffix',
runtimeSessionId='your-session-id',
qualifier="DEFAULT"
)
Il codice boto3 che segue eliminerà il runtime di Amazon Bedrock e il file di archivio .zip in s3. AgentCore
import boto3
account_id = "your aws account id"
agent_name = "strands_10_23"
bedrock_agentcore_client = boto3.client('bedrock-agentcore-control', region_name='us-west-2')
print("Deleting Agent from Amazon Bedrock AgentCore Runtime!")
response = bedrock_agentcore_client.delete_agent_runtime(
agentRuntimeId='<agent-id>'
)
print(f"Agent Runtime delete successfully!")
print(f"Status: {response['status']}")
s3_client = boto3.client('s3', region_name='us-west-2')
print("Deleting deployment archive from S3...")
s3_client.delete_object(
Bucket=f"bedrock-agentcore-code-{account_id}-us-west-2",
Key=f"{agent_name}/deployment_package.zip",
ExpectedBucketOwner=account_id
)
print("Archive deleted successfully from S3!")
- console
-
-
====== Agente di aggiornamento
Dalla pagina dei dettagli dell'agente, scegli Aggiorna hosting per creare una nuova versione con codice o configurazione aggiornati.
Aggiorna endpoint
Seleziona un endpoint dalla tabella Endpoints e scegli Modifica per aggiornare la descrizione o la versione associata.
Elimina endpoint
Seleziona un endpoint e scegli Elimina. Dovrai digitare «elimina» per confermare l'eliminazione.
Elimina agente
Dall'elenco o dalla pagina dei dettagli degli agenti, seleziona il tuo agente e scegli Elimina per rimuovere l'agente e tutte le risorse associate.
Python-specific concetti per la distribuzione diretta del codice
Scopri Python-specific i concetti relativi all'utilizzo della distribuzione diretta del codice con Amazon AgentCore Bedrock Runtime.
Quando utilizzi un'istruzione import nel codice, il runtime Python cerca nelle directory del suo percorso di ricerca finché non trova il modulo o il pacchetto. Per impostazione predefinita, la prima posizione che il runtime cerca è la directory in cui il pacchetto di distribuzione .zip è decompresso e montato (). /var/task
Puoi visualizzare il percorso di ricerca completo del tuo agente AgentCore Runtime aggiungendo il seguente frammento di codice.
import sys
search_path = sys.path
print(search_path)
Puoi anche aggiungere dipendenze in una cartella separata all'interno del tuo pacchetto .zip. Ad esempio, potresti aggiungere una versione dell'SDK Boto3 a una cartella del tuo pacchetto .zip chiamata. common Quando il pacchetto .zip viene decompresso e montato, questa cartella viene inserita nella directory /var/task. Per utilizzare nel codice una dipendenza da una cartella del pacchetto di implementazione .zip, utilizza un'istruzione import from. Ad esempio, per utilizzare una versione di Boto3 da una cartella denominata common nel tuo pacchetto .zip, usa la seguente istruzione.
from common import boto3
Ti consigliamo di non includere
pycache
cartelle nel pacchetto di distribuzione del tuo agente. Il bytecode Python compilato su una macchina di compilazione con un'architettura o un sistema operativo diversi potrebbe non essere compatibile con l'ambiente di esecuzione Runtime. AgentCore
Se la tua funzione utilizza solo pacchetti e moduli Python puri, puoi usare il comando uv pip install per installare le tue dipendenze su qualsiasi computer di compilazione locale e creare il file .zip. Molte delle librerie Python più diffuse, tra cui NumPy e Pandas, non sono Python puro e contengono codice scritto in C o C. Quando si aggiungono librerie contenenti C/C codice al pacchetto di distribuzione, è necessario compilare il pacchetto correttamente per renderlo compatibile con l'ambiente di esecuzione Runtime. AgentCore
La maggior parte dei pacchetti disponibili sul Python Package Index (PyPI) sono disponibili come «wheels» (file.whl). Un file .whl è un tipo di file ZIP che contiene una distribuzione compilata con file binari precompilati per un particolare sistema operativo e un'architettura di set di istruzioni. Per rendere il pacchetto di distribuzione compatibile con Amazon Bedrock AgentCore Runtime, devi installare la ruota per i sistemi operativi Linux e l'architettura del set di istruzioni arm64.
Alcuni pacchetti possono essere disponibili solo come distribuzioni di origine. Per questi pacchetti, devi compilare e creare tu stesso i C/C componenti ++.
Per vedere quali distribuzioni sono disponibili per il pacchetto richiesto, procedi come segue:
Se il tuo pacchetto è disponibile solo come distribuzione sorgente, devi creare tu stesso le librerie C/C ++. Per rendere il pacchetto compatibile con l'ambiente di esecuzione Amazon Bedrock AgentCore Runtime, devi compilarlo in un ambiente che utilizzi lo stesso sistema operativo Amazon Linux con set di istruzioni arm64. Puoi farlo creando il tuo pacchetto in un'istanza Linux Amazon Elastic Compute Cloud (Amazon EC2).
Per informazioni su come avviare e connettersi a un'istanza Amazon EC2 Linux, consulta la Guida introduttiva ad Amazon EC2 nella Amazon EC2 User Guide.