View a markdown version of this page

Distribuzione diretta del codice per Python - Fondamento Amazon AgentCore

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:

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
  1. 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
  1. 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

    AgentCore l'avanzamento della distribuzione mostra gli aggiornamenti dello stack CloudFormation

    Al termine della distribuzione, utilizzalo agentcore invoke per testare il tuo agente.

Custom zip + boto3
  1. 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.

    Nota

    . 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
  1. 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:

  2. Dalla home page degli agenti, scegli Host Agent

  3. 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

  4. 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)

  5. 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
  1. 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
  1. 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
  1. ====== 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.

Argomenti

    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:

    1. Cerca il nome del pacchetto nella pagina principale di Python Package Index.

    2. Seleziona la versione del pacchetto da utilizzare.

    3. Scegli Scarica file.

    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.