
Jamf는 엔지니어별 Amazon Bedrock 지출을 추적하고, 예산에 가까워지면 고비용 모델 접근을 단계적으로 제한하는 시스템을 구축했다. 제한은 15분마다 점검되며, 예산을 다 써도 저비용 모델은 계속 사용할 수 있다.
Jamf는 엔지니어 조직에 Amazon Bedrock을 폭넓게 제공한 뒤 사용자별 비용 가시성과 책임성을 확보하기 위해 이 시스템을 만들었다. 구현에는 AWS IAM 고객 관리형 정책(CMP), Amazon Athena 비용 뷰, AWS Lambda, DynamoDB가 쓰인다. 전체 코드는 GitHub 저장소에서 확인할 수 있다.
Amazon Bedrock 호출 로그는 Amazon S3에 저장된다. Athena 뷰 bedrock_cost_today는 토큰 수에 모델별 공개 요금을 적용해 사용자별 일일 지출을 계산한다. EventBridge가 15분마다 Lambda를 실행하면 Lambda는 Athena 결과와 DynamoDB의 예외 한도를 확인하고, 새 지출 구간에 도달한 사용자에게 Slack으로 해당 구간의 알림을 한 번 보낸다.
예를 들어 일일 예산의 80%에 도달하면 Anthropic Claude Opus 접근을 차단하고, 100%에 도달하면 Anthropic Claude Sonnet 접근도 차단한다. Claude Haiku는 계속 사용할 수 있다. 정책은 IAM 권한 세트에 연결되며, 사용자의 다음 Bedrock 호출부터 적용된다. 재인증은 필요하지 않고, 일일 기준 시간이 바뀐 뒤 다음 실행에서 한도를 넘지 않은 사용자 제한은 자동으로 해제된다.
대규모 마이그레이션이나 고객 대응처럼 더 높은 한도가 필요한 경우에는 Slack 명령 /bedrock-limit으로 기간이 정해진 예외를 부여할 수 있다. 명령은 사용자 식별 정보, 상향된 한도, 만료 시각을 DynamoDB에 기록하며, 만료 시각에 TTL을 설정하면 예외 항목이 자동으로 정리된다. 감사 기록에는 한도를 부여한 사람과 시각, 선택적으로 승인 티켓을 남길 수 있다.
배포에는 IAM 역할과 정책, Lambda, Athena 작업 그룹, S3 버킷, DynamoDB 테이블을 만들 권한이 필요하다. IAM Identity Center 권한 세트와 Bedrock 호출 로그의 S3 전송을 설정해야 하며, AWS CLI와 Slack 앱도 준비해야 한다. 모델별 요금은 리전의 Amazon Bedrock 요금에 맞춰 명시해야 한다. 매핑되지 않은 모델은 우회가 되지 않도록 최고 요금 구간으로 계산하고, 경고를 확인해 실제 요금을 신속히 추가하도록 설계했다.
운영 과정에서 확인한 비용과 제약도 있다. Jamf 사례에서는 수백 명 규모에서 Lambda, DynamoDB, S3 비용이 월 10달러보다 훨씬 낮았지만, Athena 비용은 스캔 범위와 실행 빈도에 따라 달라졌다. JSON 로그는 선택한 열과 관계없이 행 전체를 읽는다. 같은 약 11GB를 읽는 쿼리 네 개를 각각 실행하는 대신 집계 쿼리 하나로 묶거나 로그를 Parquet 같은 열 기반 형식으로 바꾸는 방법이 제시됐다.
또한 IAM 관리형 정책은 최대 다섯 개 버전만 보관하므로 새 버전을 만들기 전에 가장 오래된 기본 버전이 아닌 버전을 삭제해야 한다. Athena 쿼리는 비동기 방식이라 Lambda가 실행을 시작한 뒤 완료 여부를 확인하고 결과를 읽어야 하며, 이에 맞춰 함수 제한 시간을 설정해야 한다. Jamf는 사용자별 지출 한도가 경영진의 AI 접근 확대를 뒷받침했고, 저비용 모델을 남겨 두면 한도에 도달해도 업무를 계속할 수 있었다고 설명한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요