cmlapi 는 Cloudera Machine Learning(현 Cloudera AI) 워크벤치의 REST API 를 감싼 파이썬 클라이언트다. 프로젝트 · 작업 · 모델 · 애플리케이션을 코드로 다룰 때 쓴다. 워크벤치 세션 안에서는 환경 변수로 호스트와 자격 증명이 주어지지만, 바깥에서 붙일 때는 호스트 · API 키 · TLS 신뢰 설정 세 가지를 직접 넘겨야 한다.
import cmlapi
from cmlapi.rest import ApiException
config = cmlapi.Configuration()
config.host = "https://<cml-workbench-fqdn>"
api_client = cmlapi.ApiClient(configuration=config)
api_client.default_headers["Authorization"] = f"Bearer {API_KEY}"
client = cmlapi.CMLServiceApi(api_client)
try:
projects = client.list_projects()
for project in projects.projects or []:
print(project.id, project.name)
except ApiException as exc:
print("CML API error:", exc)
API 키는 워크벤치의 사용자 설정에서 발급한다. 키를 소스에 적지 않는다. 환경 변수나 권한을 제한한 파일에서 읽고, 저장소에 커밋하지 않는다.
import os
API_KEY = ${MASKED}"CML_API_KEY"]
사설 CA 로 발급한 인증서를 쓰는 환경에서는 CA 체인을 지정해야 한다. 지정하지 않으면 다음 오류가 난다.
SSLCertVerificationError: certificate verify failed: unable to get local issuer certificate
해결은 CA 체인 파일을 클라이언트에 알려 주는 것이다.
config = cmlapi.Configuration()
config.host = "https://<cml-workbench-fqdn>"
config.ssl_ca_cert = "/path/to/ca-chain.pem"
또는 CA 인증서를 OS 신뢰 저장소에 넣는다. RHEL 계열이라면 다음과 같다.
cp <ca>.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
config.verify_ssl = False 는 서버 인증서와 호스트 이름 검증을 전부 끈다. 중간자 공격에 그대로 노출되므로 운영에서 쓰지 않는다. 일회성 진단 목적으로만 쓰고 그 결과를 설정으로 남기지 않는다.
오류 메시지를 먼저 구분한다. unable to get local issuer certificate 는 신뢰 문제이므로 위 방법으로 풀린다. 반면 Missing Authority Key Identifier 는 인증서 형식 문제이며 CA 를 추가해도 해결되지 않는다. Python 3.13 부터 기본 검증에 엄격 모드가 포함되면서 확장 필드가 빠진 인증서가 거부되기 때문이다. 자세한 내용은 Agent Studio 가 CML API 호출에서 Missing Authority Key Identifier 로 실패하는 증상 에 있다.