Team C: 배포 인프라

분석 대상

파일
역할

Dockerfile

컨테이너 이미지 빌드

main.py

BedrockAgentCoreApp 엔트리포인트

.bedrock_agentcore.yaml

AgentCore CLI 설정

Dockerfile 상세 분석

# 베이스 이미지: UV 패키지 매니저 + Python 3.11 (Debian Bookworm Slim)
FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim
WORKDIR /app

# UV 설정: 시스템 Python 사용 + 바이트코드 컴파일
ENV UV_SYSTEM_PYTHON=1 UV_COMPILE_BYTECODE=1

# 의존성 설치 (UV가 pip보다 10-100배 빠름)
COPY requirements.txt requirements.txt
RUN uv pip install -r requirements.txt

# OpenTelemetry 계측 설치
RUN uv pip install aws-opentelemetry-distro>=0.10.1

# 리전 설정
ENV AWS_REGION=us-east-1
ENV DOCKER_CONTAINER=1

# 보안: 비-root 사용자로 실행
RUN useradd -m -u 1000 bedrock_agentcore
USER bedrock_agentcore

# 포트 노출: 8080 (AgentCore), 8000 (보조)
EXPOSE 8080 8000

COPY . .

# 엔트리포인트: OTel 자동 계측 + main 모듈 실행
CMD ["opentelemetry-instrument", "python", "-m", "main"]

Dockerfile 핵심 포인트

요소
설명
이유

UV

pip 대체 패키지 매니저

10-100x 빠른 설치 속도

OTel

opentelemetry-instrument

자동 추적/메트릭 수집

비-root

USER bedrock_agentcore

컨테이너 보안 모범 사례

DOCKER_CONTAINER=1

환경 플래그

호스트 바인딩 로직 분기

main.py 엔트리포인트

실행 흐름

ECR 푸시 과정

.bedrock_agentcore.yaml 설정

토론 질문

  1. opentelemetry-instrument가 자동으로 계측하는 것은 무엇인가요?

  2. stream_output()이 제너레이터인 이유는?

  3. context.session_id는 누가 생성하나요?

마지막 업데이트