View a markdown version of this page

Memulai dengan Instans menggunakan AWS CLI atau SDK - Batu Dasar Amazon AgentCore

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memulai dengan Instans menggunakan AWS CLI atau SDK

Tutorial ini berjalan melalui hosting agen pada tipe komput asi Inst ances dengan Com AWS mand Line Interface (AWS CLI) dan SDK. Pertama-tama Anda membuat penyedia kapasitas yang mendefinisikan infrastruktur Amazon Elastic Compute Cloud (Amazon EC2), kemudian membuat runtime agen yang menggunakannya, dan akhirnya memanggil agen.

Untuk prasyarat, lihat Mem ulai dengan Instans.

catatan

Nama parameter dalam contoh ini mengikuti model bidang AgentCore kontrol. Untuk bentuk permintaan dan respons otoritatif, lihat Refer ensi API AgentCore Kontrol Amazon Bedrock.

Langkah 1: Buat penyedia kapasitas

Gunakan CreateCapacityProvider operasi untuk menentukan infrastruktur EC2 Anda. Permintaan mengambil permissionsConfiguration (peran IAM digunakan untuk AgentCore mengoperasikan penyedia kapasitas) dan computeConfiguration yang menjelaskan instans EC2 melalui template peluncuran. Contoh berikut membuat penyedia kapasitas Linux dengan tipe instance tunggal yang diizinkan dan volume EBS persisten.

contoh
AWS CLI
  1. aws bedrock-agentcore-control create-capacity-provider \ --name "my_capacity_provider" \ --permissions-configuration '{ "capacityProviderOperatorRoleArn": "arn:aws:iam::111122223333:role/AgentCoreCapacityProviderOperatorRole" }' \ --compute-configuration '{ "ec2Configuration": { "launchTemplateSource": { "launchParameters": { "operatingSystem": "LINUX_X86_64", "instanceRequirements": { "allowedInstanceTypes": ["m5.large"] } } }, "vpcConfiguration": { "subnets": ["subnet-0123456789abcdef0"], "securityGroups": ["sg-0123456789abcdef0"] }, "lifecycleConfiguration": { "maxLifetime": 3600 }, "volumes": [ { "ebsConfiguration": { "name": "scratch", "sizeGiB": 50, "volumeType": "gp3" } } ] } }'
AWS SDK
  1. Contoh Python menggunakan boto3 untuk membuat penyedia kapasitas.

    import boto3 client = boto3.client("bedrock-agentcore-control", region_name="us-west-2") response = client.create_capacity_provider( name="my_capacity_provider", permissionsConfiguration={ "capacityProviderOperatorRoleArn": "arn:aws:iam::111122223333:role/AgentCoreCapacityProviderOperatorRole" }, computeConfiguration={ "ec2Configuration": { "launchTemplateSource": { "launchParameters": { "operatingSystem": "LINUX_X86_64", "instanceRequirements": { "allowedInstanceTypes": ["m5.large"], }, } }, "vpcConfiguration": { "subnets": ["subnet-0123456789abcdef0"], "securityGroups": ["sg-0123456789abcdef0"], }, "lifecycleConfiguration": { "maxLifetime": 3600, }, "volumes": [ {"ebsConfiguration": {"name": "scratch", "sizeGiB": 50, "volumeType": "gp3"}} ], } }, ) print(f"Capacity provider ARN: {response['capacityProviderArn']}")

Untuk menjalankan beban kerja GPU, sertakan jenis instance GPU yang didukung. allowedInstanceTypes AgentCore menyediakan driver GPU pada instance, sehingga gambar kontainer standar berfungsi tanpa bundling driver. Keluarga yang didukung adalahg4dn, g5g6,g6e,gr6,g6f,gr6f,g7e, daninf2. Jika Anda menyertakan jenis instans akselerator dari keluarga yang tidak didukung, permintaan gagal dengan aValidationException. Untuk informasi selengkapnya, lihat Menggunakan jenis instans GPU.

Jajak pendapat GetCapacityProvider hingga status READY sebelum mengaitkan penyedia kapasitas dengan runtime. Jika statusnya menjadiCREATE_FAILED, periksa statusCode dan statusReason untuk menentukan penyebabnya.

Langkah 2: Buat runtime agen pada penyedia kapasitas

Buat runtime agen dengan capacityProviderConfiguration referensi penyedia kapasitas Anda. Untuk memasang volume yang ditentukan pada penyedia kapasitas ke dalam sistem file agen, tambahkan capacityProviderVolume entri filesystemConfigurations yang mereferensikan volume berdasarkan nama. Jalur pemasangan harus berada di bawah /mnt dengan satu subdirektori (misalnya,/mnt/scratch).

Runtime agen memiliki sendirilifecycleConfiguration.maxLifetime, yang default menjadi 28800 detik (8 jam). Nilai ini harus kurang dari atau sama dengan maxLifetime yang ditetapkan penyedia kapasitasec2Configuration.lifecycleConfiguration. Penyedia kapasitas pada Langkah 1 menetapkan nilai itu menjadi 3600 detik (1 jam), sehingga default runtime 8 jam akan melebihi itu dan CreateAgentRuntime akan gagal dengan aValidationException. Oleh karena itu, contoh berikut maxLifetime menetapkan runtime 1800 detik, yang berada dalam batas penyedia kapasitas.

catatan

Kedua sumber daya menggunakan lifecycleConfiguration anggota, tetapi mereka adalah struktur yang berbeda. Versi penyedia kapasitas mengambil idleInstanceTimeout dan maxLifetime dan berlaku untuk instance. Versi runtime agen mengambil idleRuntimeSessionTimeout dan maxLifetime dan berlaku untuk sesi. Untuk informasi selengkapnya, lihat Meng onfigurasi pengaturan AgentCore siklus hidup Amazon Bedrock.

Jangan lulus networkConfiguration saat Anda menentukancapacityProviderConfiguration. Runtime Instances mewarisi jaringannya dari penyedia kapasitasec2Configuration.vpcConfiguration, jadi menentukan keduanya gagal dengan aValidationException.

contoh
AWS CLI
  1. aws bedrock-agentcore-control create-agent-runtime \ --agent-runtime-name "my_instances_agent" \ --role-arn "arn:aws:iam::111122223333:role/AgentRuntimeRole" \ --agent-runtime-artifact '{ "containerConfiguration": { "containerUri": "111122223333.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest" } }' \ --capacity-provider-configuration '{ "capacityProviderArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:capacity-provider/my_capacity_provider-a1b2c3d4e5" }' \ --lifecycle-configuration '{ "idleRuntimeSessionTimeout": 300, "maxLifetime": 1800 }' \ --filesystem-configurations '[ { "capacityProviderVolume": { "volumeName": "scratch", "mountPath": "/mnt/scratch" } } ]'
AWS SDK
  1. Contoh Python menggunakan boto3 untuk membuat runtime agen pada Instans.

    import boto3 client = boto3.client("bedrock-agentcore-control", region_name="us-west-2") response = client.create_agent_runtime( agentRuntimeName="my_instances_agent", roleArn="arn:aws:iam::111122223333:role/AgentRuntimeRole", agentRuntimeArtifact={ "containerConfiguration": { "containerUri": "111122223333.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest" } }, capacityProviderConfiguration={ "capacityProviderArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:capacity-provider/my_capacity_provider-a1b2c3d4e5", }, lifecycleConfiguration={ "idleRuntimeSessionTimeout": 300, "maxLifetime": 1800, }, filesystemConfigurations=[ { "capacityProviderVolume": {"volumeName": "scratch", "mountPath": "/mnt/scratch"} } ], ) print(f"Agent runtime ARN: {response['agentRuntimeArn']}")

Langkah 3: Panggil agen

Memanggil runtime dengan cara yang sama seperti VM-backed runtime mikro. Gunakan kembali yang sama runtimeSessionId di seluruh pemanggilan untuk menjaga sesi pada instance yang sama. Ini memungkinkan agen Anda mengakses data dari pemanggilan sebelumnya. Untuk menempatkan agen yang berkolaborasi bersama, gunakan agen runtimeSessionId yang sama di beberapa runtime yang berbagi penyedia kapasitas.

contoh
AWS CLI
  1. echo '{"prompt": "Analyze the sales data and summarize the key trends."}' > payload.json aws bedrock-agentcore invoke-agent-runtime \ --agent-runtime-arn "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my_instances_agent-suffix" \ --runtime-session-id "project-xyz-0000000000000000000000000000" \ --qualifier "DEFAULT" \ --payload fileb://payload.json \ response.json

    payloadParameternya adalah gumpalan biner, dan AWS CLI mengharapkan gumpalan dikodekan base64 secara default. Meneruskan JSON mentah sebaris--payload '{"prompt": "…​"}', seperti, gagal di sisi klien dengan Invalid base64 kesalahan sebelum permintaan mencapai layanan. For fileb:// mulir yang digunakan di sini membaca file sebagai biner terlepas dari cli_binary_format pengaturannya, sehingga menghindari langkah pengkodean.

Respons agen adalah gumpalan streaming yang ditulis AWS CLI ke file keluaran yang Anda beri nama sebagai argumen terakhir, dalam contoh ini. response.json Output standar hanya membawa statusCode bidang runtimeSessionIdcontentType,, dan, jadi baca file output untuk melihat apa yang dikembalikan agen Anda.

AWS SDK
  1. Contoh Python menggunakan boto3 untuk memanggil runtime agen pada Instans.

    import boto3 import json client = boto3.client("bedrock-agentcore", region_name="us-west-2") response = client.invoke_agent_runtime( agentRuntimeArn="arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my_instances_agent-suffix", runtimeSessionId="project-xyz-0000000000000000000000000000", # 33+ chars; reuse to keep the session payload=json.dumps({"prompt": "Analyze the sales data and summarize the key trends."}).encode(), qualifier="DEFAULT", ) print("Agent response:", json.loads(response["response"].read()))

Setidaknya runtimeSessionId harus 33 karakter.

Pemanggilan pertama untuk sesi baru menyediakan instans EC2 di akun Anda dan meluncurkan agen, sehingga biasanya membutuhkan waktu lebih lama daripada pemanggilan selanjutnya. Pemanggilan berikutnya ke sesi yang sama menggunakan kembali instance yang sedang berjalan dan kembali lebih cepat.

AgentCore menyediakan instans ini sebagai inst ans terkelola Amazon EC2, yang disembunyikan dari DescribeInstances dan tampilan konsol EC2 Anda secara default. Pang aws ec2 describe-instances gilan biasa tidak mencantumkannya. Untuk melihatnya, sertakan sumber daya terkelola:

aws ec2 describe-instances --include-managed-resources \ --filters "Name=tag-key,Values=bedrock-agentcore:capacity-provider-id"

Untuk informasi selengkapnya tentang mengelola visibilitas instans, lihat setelan visibilitas sumber daya terkel ola.

Co-locate beberapa agen pada satu instance

Ketika dua runtime agen mereferensikan penyedia kapasitas yang sama dan Anda memanggilnya dengan yang sama runtimeSessionId, kedua agen berjalan pada instans EC2 yang sama. Di sana, mereka dapat berbagi volume yang dikonfigurasi dalam konfigurasi sistem file mereka. Agen berkolaborasi dengan membaca dan menulis file pada volume bersama itu — setiap agen dipanggil secara independen dan sebaliknya tidak berbagi status. Misalnya, test runner dapat menulis hasil ke volume, dan penganalisis kode yang dipanggil pada sesi yang sama kemudian dapat membacanya. Untuk batas antara agen pada instance bersama, lihat Model keamanan dan izin untuk Instans Runtime.

import boto3 import json client = boto3.client("bedrock-agentcore", region_name="us-west-2") session_id = "collab-session-000000000000000000000" # Agent A — created on capacity provider "my_capacity_provider" client.invoke_agent_runtime( agentRuntimeArn="arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/test-runner-suffix", runtimeSessionId=session_id, payload=json.dumps({"prompt": "Run the test suite for project ABC"}).encode(), qualifier="DEFAULT", ) # Agent B — a different runtime that shares the SAME capacity provider and session ID, # so it runs on the same instance as Agent A and can read the files Agent A wrote to the shared volume. client.invoke_agent_runtime( agentRuntimeArn="arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/code-analyzer-suffix", runtimeSessionId=session_id, payload=json.dumps({"prompt": "Analyze the code for project ABC"}).encode(), qualifier="DEFAULT", )

Setiap agen berjalan dengan kredentif IAM sendiri yang berasal dari peran eksekusi runtime, sehingga Anda dapat memberikan izin berbeda kepada agen yang berkolaborasi meskipun mereka berbagi instance yang sama. Namun, karena agen pada instance yang sama tidak terisolasi satu sama lain, agen mana pun berpotensi membaca kredenSIAL agen lain. Co-locate Hanya agen yang saling dipercaya. Untuk informasi selengkapnya, lihat Model keamanan dan izin untuk Instans Runtime.

Bersihkan: hentikan dan hapus sesi

Awas

Untuk menghindari biaya berkelanjutan untuk instans Amazon EC2 dan volume Amazon EBS yang disediakan di akun Anda, hapus sesi dan penyedia kapasitas yang tidak lagi Anda perlukan setelah menyelesaikan tutorial ini.

Sebuah sesi dapat meng-host beberapa runtime agen pada instance yang sama, sehingga AgentCore menyediakan dua operasi yang berbeda:

  • Menghentikan runtime agen dalam sesi — StopRuntimeSession menghentikan runtime agen tunggal dalam sesi, diidentifikasi oleh ARN runtime dan ID sesi. Runtime agen lain yang berbagi sesi dan instance yang sama tidak terpengaruh.

  • Menghapus sesi — DeleteCapacityProviderSession menghapus seluruh sesi dan mencabut sumber daya EC2 yang dibuat di akun Anda (instans, antarmuka jaringan, dan volume EBS persisten apa pun), sehingga Anda berhenti mengeluarkan biaya infrastruktur dan penyimpanan.

Untuk menghentikan runtime agen tertentu pada sesi, panggil StopRuntimeSession operasi dengan ARN runtime dan ID sesi.

contoh
AWS CLI
  1. aws bedrock-agentcore stop-runtime-session \ --agent-runtime-arn "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my_instances_agent-suffix" \ --runtime-session-id "project-xyz-0000000000000000000000000000"
AWS SDK
  1. Contoh Python menggunakan boto3 untuk menghentikan sesi runtime.

    import boto3 client = boto3.client("bedrock-agentcore", region_name="us-west-2") client.stop_runtime_session( agentRuntimeArn="arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my_instances_agent-suffix", runtimeSessionId="project-xyz-0000000000000000000000000000", )

Untuk menghapus sesi dan menghapus semua sumber dayanya — termasuk volume EBS persisten — panggil DeleteCapacityProviderSession dengan ID penyedia kapasitas dan ID sesi. Operasi ini idempoten dan asinkron: ia segera kembali saat menghentikan AgentCore instance dan menghapus volume di latar belakang.

ID sesi adalah nilai yang Anda berikan pada pemanggilan, dan tidak ada operasi yang mencantumkan sesi pada penyedia kapasitas. Catat runtimeSessionId nilai-nilai yang Anda gunakan sehingga Anda dapat menghapus setiap sesi setelahnya. Jika Anda tidak lagi memilikinya, Anda dapat menemukan instance yang masih berjalan, lalu menghapus penyedia kapasitas untuk menghapus semua sesinya:

aws ec2 describe-instances --include-managed-resources \ --filters "Name=tag-key,Values=bedrock-agentcore:capacity-provider-id" \ --query 'Reservations[].Instances[?State.Name!=`terminated`].[InstanceId,State.Name]'
contoh
AWS CLI
  1. aws bedrock-agentcore delete-capacity-provider-session \ --capacity-provider-id "my_capacity_provider-a1b2c3d4e5" \ --session-id "project-xyz-0000000000000000000000000000"
AWS SDK
  1. Contoh Python menggunakan boto3 untuk menghapus sesi penyedia kapasitas.

    import boto3 client = boto3.client("bedrock-agentcore", region_name="us-west-2") response = client.delete_capacity_provider_session( capacityProviderId="my_capacity_provider-a1b2c3d4e5", sessionId="project-xyz-0000000000000000000000000000", ) print("Session status:", response["status"])

Menghapus penyedia kapasitas

Ketika Anda tidak lagi membutuhkan penyedia kapasitas, hapus dengan DeleteCapacityProvider operasi. Menghapus penyedia kapasitas menghentikan dan menghapus semua sesi terkait dan penyimpanan persistennya, sehingga ini juga berfungsi sebagai cara untuk membersihkan sesi yang ID-nya tidak lagi Anda miliki. Anda tidak perlu menghapus sesi terlebih dahulu. Namun, Anda perlu menghapus runtime yang mereferensikan penyedia kapasitas: hapus versi terkait, titik akhir, atau runtime terlebih dahulu, atau permintaan penghapusan gagal dengan a. ValidationException Operasi tidak sinkron; mengidentifikasi penyedia kapasitas dengan ID-nya.

contoh
AWS CLI
  1. aws bedrock-agentcore-control delete-capacity-provider \ --capacity-provider-id "my_capacity_provider-a1b2c3d4e5"
AWS SDK
  1. Contoh Python menggunakan boto3 untuk menghapus penyedia kapasitas.

    import boto3 client = boto3.client("bedrock-agentcore-control", region_name="us-west-2") client.delete_capacity_provider( capacityProviderId="my_capacity_provider-a1b2c3d4e5", )