나 혼자만 레벨업
AWS Bedrock Agent를 사용하여 Persona LLM 모델 생성 및 배포 본문
1. 설계
<Bedrock Agent Runtime Endpoint -> Rambda -> API Gateway -> Colab>
원래는 람다를 사용하지 않고 Bedrock Agent의 '제어 권한 반환(return control)'을 사용하여
Bedrock Agent Endpoint를 통해 직접적인 외부(App)와 Bedrock Agent Model과의 연결을 진행하려고 했다. 하지만 제어 권한 반환에 대한 정보 부족으로 람다를 거쳐 응답하는 방식으로 프로젝트를 수정했다.
제어 권한 반환(Return Control)
- 제어 권한 반환 – AWS Lambda 함수를 사용하는 과정을 건너뛰고 에이전트를 호출하는 애플리케이션에 제어 권한을 반환할 수 있습니다. 따라서, 필요한 네트워킹 및 보안 구성을 Lambda 함수에 통합할 필요 없이
애플리케이션이 AWS 외부 시스템과 직접 통합하거나
Amazon Virtual Private Cloud(VPC)에 호스팅된 내부 엔드포인트를 직접 호출할 수 있습니다.
Agents for Amazon Bedrock 정식 출시 – 간소화된 생성 및 구성 환경 기능 추가 | Amazon Web Services
오늘 부터 생성형 AI을 사용하여 여러 시스템과 데이터 소스에서 작업을 실행하는 애플리케이션을 만들 수 있는 Agents for Amazon Bedrock를 정식 출시합니다. 다음과 같은 새로운 기능들을 추가했습
aws.amazon.com
https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/agents-action-add.html
Amazon Bedrock에서 에이전트에 작업 그룹 추가 - Amazon Bedrock
Anthropic Claude 3.5 Sonnet을 사용하는 경우, httpVerb__actionGroupName__apiName 양식의 도구 이름이 Anthropic 도구 이름 형식인 ^[a-zA-Z0-9_-]{1,64}$ 형식을 따르는지 확인합니다. actionGroupName 및 apiName에는 '__' 이중
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/agents-returncontrol.html
InvokeAgent 응답에서 유도된 정보를 전송하여 에이전트 개발자에게 제어 반환 - Amazon Bedrock
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
3-31 제어권한반환
1. AWS Privatelink
AWS PrivateLink 는 VPC에 있는 것처럼 VPC를 서비스 및 리소스에 비공개로 연결하는 데 사용할 수 있는 가용성과 확장성이 뛰어난 기술입니다. 프라이빗 서브넷에서 서비스 또는 AWS Site-to-Site VPN 리소스와의 통신을 허용하기 위해 인터넷 게이트웨이, NAT 디바이스, 퍼블릭 IP 주소, AWS Direct Connect 연결 또는 연결을 사용할 필요가 없습니다. 따라서 VPC에서 연결할 수 있는 특정 API 엔드포인트, 사이트, 서비스 및 리소스를 제어합니다.
https://docs.aws.amazon.com/ko_kr/vpc/latest/privatelink/what-is-privatelink.html
AWS PrivateLink란 무엇인가요? - Amazon Virtual Private Cloud
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
실제 서비스(bedrock agent)는 외부에 있지만, private subnet에 있는 것 처럼 보이게 하는 것

AWS PrivateLink는 VPC(Virtual Private Cloud)를 서비스 및 리소스에 비공개로 연결하는 데 사용할 수 있는 가용성과 확장성이 뛰어난 기술입니다8. 이 기술을 사용하면 마치 해당 서비스나 리소스가 사용자의 VPC 내에 있는 것처럼 접근할 수 있습니다1.
AWS PrivateLink의 주요 특징
기본 개념: AWS PrivateLink는 VPC와 지원되는 AWS 서비스, 다른 AWS 계정에서 호스팅하는 서비스, 지원되는 AWS Marketplace 서비스 및 리소스 간에 프라이빗 연결을 설정합니다57.
작동 방식: 서비스나 리소스에 액세스해야 하는 서브넷에 VPC 엔드포인트를 생성하면, 해당 서브넷에 탄력적 네트워크 인터페이스(ENI)가 생성되어 서비스로 향하는 트래픽의 진입점 역할을 합니다56.
보안 이점: 인터넷 게이트웨이, NAT 디바이스, 퍼블릭 IP 주소, AWS Direct Connect 연결 또는 AWS Site-to-Site VPN 연결 없이도 서비스나 리소스와 통신할 수 있어 보안이 강화됩니다18.
AWS PrivateLink 사용 사례
AWS PrivateLink는 다음과 같은 연결 유형을 지원합니다:
- AWS 서비스 접근: VPC에서 AWS 서비스에 비공개로 접근7
- VPC 엔드포인트 서비스: 다른 AWS 계정에서 호스팅하는 서비스에 접근1
- AWS Marketplace 서비스: 지원되는 AWS Marketplace 파트너 서비스에 접근1
- 온프레미스 애플리케이션: AWS Direct Connect를 통해 온프레미스 애플리케이션에서 서비스에 비공개로 접근6
- 자체 서비스 공유: 자체 VPC 엔드포인트 서비스를 생성하여 다른 AWS 고객에게 제공56
AWS PrivateLink의 이점
- 네트워크 아키텍처 단순화: 기존 네트워킹 구성 없이도 안전한 프라이빗 연결 설정 가능5
- 공격 표면 감소: 트래픽이 공용 인터넷에 노출되지 않음6
- 데이터 보안 강화: 데이터 트래픽을 AWS 네트워크 내로 제한5
- 서비스 제공 용이성: 자체 서비스를 다른 AWS 고객에게 안전하게 제공 가능7
- AWS Marketplace 통합: 서비스 검색 및 결제 용이46
AWS PrivateLink를 통해 VPC에서 연결할 수 있는 특정 API 엔드포인트, 사이트, 서비스 및 리소스를 제어할 수 있어 보안과 네트워크 관리 측면에서 큰 이점을 제공합니다8.
이해한 내용
AWS VPC 엔드포인트와 PrivateLink
AWS 클라우드에서 프라이빗 서브넷의 리소스가 인터넷을 통하지 않고 AWS 서비스에 접근해야 할 때, VPC 엔드포인트와 PrivateLink를 사용합니다.
AWS PrivateLink와 VPC 엔드포인트 이해하기
1단계: PrivateLink가 무엇인가요?
- AWS PrivateLink는 퍼블릭 인터넷을 통하지 않고 AWS 서비스에 비공개로 연결하는 기술입니다.
- 이 기술을 사용하면 데이터가 인터넷에 노출되지 않아 보안이 강화됩니다.
2단계: VPC 엔드포인트란?
- VPC 엔드포인트는 PrivateLink 기술을 사용하여 만들어진 연결 지점입니다.
- 인터페이스 VPC 엔드포인트는 ENI(Elastic Network Interface)를 통해 구현됩니다.
3단계: VPC 엔드포인트 생성 과정
- 프라이빗 서브넷에 VPC 엔드포인트 생성
- AWS 콘솔이나 CLI를 통해 VPC 엔드포인트를 생성합니다.
- 접근하려는 서비스(예: Bedrock, CloudWatch)를 선택합니다.
- ENI 자동 생성
- 엔드포인트 생성 시 AWS가 해당 서브넷에 ENI를 자동으로 생성합니다.
- 이 ENI는 서비스와의 통신을 담당합니다.
- 서비스별 ENI 생성
- 각 서비스마다 별도의 엔드포인트를 생성하면, 각각의 ENI가 생성됩니다.
- 예: Bedrock 엔드포인트용 ENI, CloudWatch 엔드포인트용 ENI
- ENI에 IP 주소 할당
- 각 ENI에는 서브넷 내의 프라이빗 IP 주소가 자동으로 할당됩니다.
- 이 IP 주소가 엔드포인트의 주소가 됩니다.
4단계: 엔드포인트를 통한 서비스 접근
- 엔드포인트 주소 역할
- ENI의 IP 주소가 엔드포인트의 주소입니다.
- "ENI 주소 = 엔드포인트 주소"라고 생각하면 됩니다.
- PrivateLink 연결 구성
- ENI를 통해 PrivateLink가 AWS 내부 네트워크를 사용하여 서비스에 연결합니다.
- 이 연결은 인터넷을 통하지 않고 AWS 네트워크 내에서만 이루어집니다.
- 서비스 접근
- 이제 프라이빗 서브넷의 리소스(예: EC2 인스턴스)는 이 ENI를 통해 해당 AWS 서비스에 안전하게 접근할 수 있습니다.
요약
- AWS PrivateLink는 AWS 서비스에 비공개로 연결할 수 있는 기술입니다.
- VPC 엔드포인트는 PrivateLink를 사용하여 만든 연결 지점입니다.
- 엔드포인트 생성 시 서브넷에 ENI가 생성됩니다.
- 각 서비스(Bedrock, CloudWatch 등)별로 별도의 ENI가 생성됩니다.
- ENI의 IP 주소가 엔드포인트의 주소입니다.
- 이 주소를 통해 PrivateLink가 AWS 서비스에 안전하게 연결합니다.
이렇게 구성하면 인터넷 게이트웨이나 NAT 게이트웨이 없이도 프라이빗 서브넷에서 AWS 서비스에 접근할 수 있습니다.
2. bedrock agent 호출
Use InvokeAgent with an AWS SDK - Amazon Bedrock
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com
try:
# Note: The execution time depends on the foundation model, complexity of the agent,
# and the length of the prompt. In some cases, it can take up to a minute or more to
# generate a response.
response = self.agents_runtime_client.invoke_agent(
agentId=agent_id,
agentAliasId=agent_alias_id,
sessionId=session_id,
inputText=prompt,
)
private subnet에 있는 bedrock agent를 호출할 때
1. bedrock agent runtime endpoint 생성
2. bedrock agent에서 '제어권한반환'을 설정
3. 위의 코드를 사용하여 코랩에서 호출시, invoke_agent에서
bedrock agent -> bedrock agent runtime endpoint 호출이 일어나기 때문에,
4. 결국 private subnet에 있는 bedrock agent runtime endpoint 호출을 한다.
5. 외부 인터넷을 사용할 때는 외부에 있는 bedrock agent 호출을 사용한다.
2. 구성
1. VPC (10.4.0.0/16)

2. 라우팅 테이블


3. 보안그룹 (Troubleshooting – self-referencing)


< AWS 보안 그룹 self-referencing 설정의 중요 >
· 동일한 보안 그룹이라도 명시적 허용 필요:
Lambda와 Bedrock Service Endpoint가 같은 보안 그룹에 속해 있더라도, 기본적으로 모든 트래픽은 차단
· Self-referencing 설정 필요:
같은 보안 그룹 내 리소스 간 통신을 위해선 인바운드 규칙에 Self-referencing 설정이 반드시 필요
· 보안 그룹 기본 원칙:
보안 그룹은 명시적으로 허용된 트래픽만 통과시키고, 나머지는 모두 차단한다.
인바운드 규칙에 동일 보안 그룹을 소스로 추가하여 Lambda와 Bedrock Endpoint 간 통신을 허용해야 한다.
4. Bedrock-agent-runtime-endpoint


