기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CLI 또는 SDK를 사용하여 인스턴스 시작하기
이 자습서에서는 AWS 명령줄 인터페이스(AWS CLI) 및 SDK를 사용하여 인스턴스 컴퓨팅 유형에서 에이전트를 호스팅하는 방법을 안내합니다. SDKs 먼저 Amazon Elastic Compute Cloud(Amazon EC2) 인프라를 정의하는 용량 공급자를 생성한 다음 이를 사용하는 에이전트 런타임을 생성하고 마지막으로 에이전트를 호출합니다.
사전 조건은 인스턴스 시작하기를 참조하세요.
참고
이 예제의 파라미터 이름은 AgentCore 컨트롤 플레인 모델을 따릅니다. 신뢰할 수 있는 요청 및 응답 형태는 Amazon Bedrock AgentCore 제어 API 참조를 참조하세요.
1단계: 용량 공급자 생성
CreateCapacityProvider 작업을 사용하여 EC2 인프라를 정의합니다. 요청은 permissionsConfiguration ( AgentCore가 용량 공급자를 운영하는 데 사용하는 IAM 역할) 및 시작 템플릿을 통해 EC2 인스턴스를 computeConfiguration 설명하는를 사용합니다. 다음 예시에서는 허용되는 단일 인스턴스 유형과 영구 EBS 볼륨을 사용하여 Linux 용량 공급자를 생성합니다.
예
GPU 워크로드를 실행하려면에 지원되는 GPU 인스턴스 유형을 포함합니다allowedInstanceTypes. AgentCore는 인스턴스에 GPU 드라이버를 프로비저닝하므로 표준 컨테이너 이미지는 드라이버 번들링 없이 작동합니다. 지원되는 패밀리는 g4dn, g5, g6, g6e, gr6, g6f, gr6f, 및 g7e입니다inf2. 지원되지 않는 패밀리의 액셀러레이터 인스턴스 유형을 포함하면에서 요청이 실패합니다ValidationException. 자세한 내용은 GPU 인스턴스 유형 사용을 참조하세요.
용량 공급자를 런타임과 연결READY하기 전에 상태가가 될 GetCapacityProvider 때까지 폴링합니다. 상태가가 되면 statusCode 및를 CREATE_FAILED검사statusReason하여 원인을 확인합니다.
2단계: 용량 공급자에서 에이전트 런타임 생성
용량 공급자를 참조capacityProviderConfiguration하는를 사용하여 에이전트 런타임을 생성합니다. 용량 공급자에 정의된 볼륨을 에이전트의 파일 시스템에 탑재하려면 볼륨을 이름으로 참조filesystemConfigurations하는 capacityProviderVolume 항목을에 추가합니다. 탑재 경로는 단일 하위 디렉터리(예: )를 /mnt 사용하여 아래에 있어야 합니다/mnt/scratch.
에이전트 런타임에는 기본값이 28,800초(8시간)lifecycleConfiguration.maxLifetime인 자체이 있습니다. 이 값은 용량 공급자maxLifetime가에 설정한 보다 작거나 같아야 합니다ec2Configuration.lifecycleConfiguration. 1단계의 용량 공급자는이 값을 3600초(1시간)로 설정하므로 런타임 기본값인 8시간이이 값을 초과하고에서 CreateAgentRuntime 실패합니다ValidationException. 따라서 다음 예제에서는 런타임을 용량 공급자maxLifetime의 제한 내에 있는 1800초로 설정합니다.
참고
두 리소스 모두 lifecycleConfiguration 멤버를 사용하지만 구조는 다릅니다. 용량 공급자의 버전은 idleInstanceTimeout 및를 가져maxLifetime와 인스턴스에 적용합니다. 에이전트 런타임의 버전은 idleRuntimeSessionTimeout 및를 가져maxLifetime와 세션에 적용합니다. 자세한 내용은 Amazon Bedrock AgentCore 수명 주기 설정 구성을 참조하세요.
를 지정할 networkConfiguration 때 전달하지 마십시오capacityProviderConfiguration. 인스턴스 런타임은 용량 공급자의에서 네트워킹을 상속ec2Configuration.vpcConfiguration하므로를 둘 다 지정하면 실패합니다ValidationException.
예
3단계: 에이전트 간접 호출
microVM 지원 런타임과 동일한 방식으로 런타임을 호출합니다. 간접 호출 runtimeSessionId 간에 동일한를 재사용하여 세션을 동일한 인스턴스에 유지합니다. 이렇게 하면 에이전트가 이전 호출의 데이터에 액세스할 수 있습니다. 공동 작업 에이전트를 공동 배치하려면 용량 공급자를 공유하는 여러 런타임runtimeSessionId에서 동일한를 사용합니다.
예
에이전트의 응답은이 예제에서 AWS CLI가 마지막 인수로 지정한 출력 파일에 쓰는 스트리밍 BLOB입니다response.json. 표준 출력에는 runtimeSessionId, contentType및 statusCode 필드만 포함되므로 출력 파일을 읽고 에이전트가 반환한 내용을 확인합니다.
- AWS SDK
-
-
boto3를 사용하여 인스턴스에서 에이전트 런타임을 호출하는 Python 예제입니다.
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()))
-
는 33자 이상이어야 runtimeSessionId 합니다.
새 세션의 첫 번째 호출은 계정에 EC2 인스턴스를 프로비저닝하고 에이전트를 시작하므로 일반적으로 이후 호출보다 오래 걸립니다. 동일한 세션에 대한 후속 호출은 실행 중인 인스턴스를 재사용하고 훨씬 더 빠르게 반환합니다.
AgentCore는 이러한 인스턴스를 Amazon EC2 관리형 인스턴스로 프로비저닝하며, 기본적으로 DescribeInstances 및 EC2 콘솔 보기에서 숨겨집니다. 일반 aws ec2 describe-instances 호출에는 나열되지 않습니다. 이를 보려면 관리형 리소스를 포함합니다.
aws ec2 describe-instances --include-managed-resources \ --filters "Name=tag-key,Values=bedrock-agentcore:capacity-provider-id"
인스턴스 가시성 관리에 대한 자세한 내용은 관리형 리소스 가시성 설정을 참조하세요.
인스턴스 하나에 여러 에이전트 공동 배치
두 에이전트 런타임이 동일한 용량 공급자를 참조하고 동일한 로 호출하면 runtimeSessionId두 에이전트 모두 동일한 EC2 인스턴스에서 실행됩니다. 여기에서 파일 시스템 구성에 구성된 볼륨을 공유할 수 있습니다. 에이전트는 공유 볼륨에서 파일을 읽고 기록하여 협업합니다. 각 에이전트는 독립적으로 호출되며 달리 상태를 공유하지 않습니다. 예를 들어 테스트 실행기는 볼륨에 결과를 쓸 수 있으며, 동일한 세션에서 호출된 코드 분석기는 결과를 읽을 수 있습니다. 공유 인스턴스의 에이전트 간 경계는 런타임 인스턴스에 대한 보안 모델 및 권한을 참조하세요.
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", )
각 에이전트는 런타임의 실행 역할에서 파생된 자체 IAM 자격 증명으로 실행되므로 공동 작업 에이전트가 동일한 인스턴스를 공유하더라도 서로 다른 권한을 부여할 수 있습니다. 그러나 동일한 인스턴스의 에이전트는 서로 격리되어 있지 않으므로 모든 에이전트는 잠재적으로 다른 에이전트의 자격 증명을 읽을 수 있습니다. 상호 신뢰할 수 있는 에이전트만 공동 배치합니다. 자세한 내용은 런타임 인스턴스에 대한 보안 모델 및 권한을 참조하세요.
정리: 세션 중지 및 삭제
주의
계정에 프로비저닝된 Amazon EC2 인스턴스 및 Amazon EBS 볼륨에 대한 요금이 계속 부과되지 않도록 하려면이 자습서를 완료할 때 더 이상 필요하지 않은 세션 및 용량 공급자를 삭제합니다.
세션은 동일한 인스턴스에서 여러 에이전트 런타임을 호스팅할 수 있으므로 AgentCore는 두 가지 고유한 작업을 제공합니다.
-
세션에서 에이전트 런타임 중지 -는 런타임 ARN 및 세션 ID로 식별되는 세션 내에서 단일 에이전트 런타임을
StopRuntimeSession중지합니다. 동일한 세션과 인스턴스를 공유하는 다른 에이전트 런타임은 영향을 받지 않습니다. -
세션 삭제 -는 전체 세션을
DeleteCapacityProviderSession삭제하고 계정에서 생성된 EC2 리소스(인스턴스, 네트워크 인터페이스 및 영구 EBS 볼륨)의 프로비저닝을 해제하므로 인프라 및 스토리지 비용 발생을 중지합니다.
세션에서 특정 에이전트 런타임을 중지하려면 런타임 ARN 및 세션 ID를 사용하여 StopRuntimeSession 작업을 호출합니다.
예
세션을 삭제하고 영구 EBS 볼륨을 포함한 모든 리소스를 프로비저닝 해제하려면 용량 공급자 ID와 세션 ID를 DeleteCapacityProviderSession 사용하여를 호출합니다. 작업은 멱등성 및 비동기식입니다. AgentCore가 인스턴스를 종료하고 백그라운드에서 볼륨을 삭제하는 동안 즉시 반환됩니다.
세션 IDs는 호출 시 제공하는 값이며 용량 공급자의 세션을 나열하는 작업은 없습니다. 나중에 각 세션을 삭제할 수 있도록 사용하는 runtimeSessionId 값을 기록해 둡니다. 더 이상 인스턴스가 없는 경우 아직 실행 중인 인스턴스를 찾은 다음 용량 공급자를 삭제하여 모든 세션을 프로비저닝 해제할 수 있습니다.
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]'
예
용량 공급자 삭제
용량 공급자가 더 이상 필요하지 않으면 DeleteCapacityProvider 작업으로 용량 공급자를 삭제합니다. 용량 공급자를 삭제하면 연결된 모든 세션과 영구 스토리지가 중지되고 삭제되므로 더 이상 IDs 합니다. 세션을 먼저 삭제할 필요는 없습니다. 그러나 용량 공급자를 참조하는 런타임을 제거해야 합니다. 연결된 버전, 엔드포인트 또는 런타임을 먼저 삭제하거나에서 삭제 요청이 실패합니다ValidationException. 작업은 비동기식이며 ID로 용량 공급자를 식별합니다.