C.W.K.
Stream
Lesson 03 of 08 · published

인증 경로: API 키 · 콘솔 · OAuth · Bedrock/Vertex

~18 min · auth, api-key, oauth, bedrock, vertex

Level 0Observer
0 XP0/64 lessons0/13 achievements
0/150 XP to next level150 XP to go0% complete

Claude한테 말 거는 방법 네 가지

Claude 표면에 인증하는 길은 네 갈래. Anthropic Console에서 받은 API 키, Pro/Max 구독으로 CLI가 쓰는 Claude Code OAuth, AWS 자격증명 쓰는 Amazon Bedrock, GCP 자격증명 쓰는 Google Vertex AI. 각 경로마다 쿼터, 과금 표면, 리전 제약, 기능 노출이 달라. 호환되는 게 아니야 — 결정.

각 경로가 실제로 어떻게 굴러가

API 키는 가장 직접적: ANTHROPIC_API_KEY 환경변수 잡고 SDK 부르면 끝. OAuth는 Claude Code CLI가 Pro/Max 구독으로 로그인한 토큰을 쓰는 방식 — Agent SDK도 같은 인증으로 굴러가. 이게 cwkPippa의 Claude 브레인이 토큰당 과금 안 하고 아빠의 기존 Max 구독 위에 사는 이유야. Bedrock이랑 Vertex는 호출 표면 자체를 바꾸고(SDK 클라이언트가 따로) 엔터프라이즈 쿼터·리전 거주성을 풀지만, 기능 신선도는 직접 API보다 한 박자 늦어.

2-of-2 안전망, 단일 장애점 X

프로덕션이면 어느 경로가 primary고 어느 게 보험인지 알아야 해. cwkPippa의 Gemini 베리언트는 OAuth(Cloud Code Assist) 디폴트, OAuth 쿼터/인증 실패 시 유료 Gemini API 키로 자동 전환 — 조용히 말고 sticky 토스트로 보이게. Claude 브레인은 OAuth-only로 설계 (Anthropic API 키는 미래용 reserved scaffolding이지 런타임 경로 아님). 정책을 글로 박아두는 게 새벽 3시 즉흥 회피의 시작이야.

원칙: 인증 경로는 프로덕트 결정이지 배포 디테일 아니야. 환경별로 어떤 경로가 도는지 문서화해.

Code

API 키 인증 (Python)·python
import os
from anthropic import Anthropic

# 키는 env에서, 절대 하드코딩 X.
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=512,
    messages=[{"role": "user", "content": "One sentence on why pinning model ids matters."}],
)
print(response.content[0].text)
Claude Code OAuth 인증 (Agent SDK)·python
# Claude Agent SDK는 `claude` CLI 로그인 OAuth 토큰을 그대로 재사용.
# `claude login` 한 번 하면 SDK가 keychain에서 토큰을 자동으로 집어.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions

async def main():
    options = ClaudeAgentOptions(
        cwd="/tmp",
        # api_key 안 줌; 인증은 keychain의 OAuth 토큰으로 흐름.
    )
    async for event in query(prompt="What model are you?", options=options):
        print(event)

asyncio.run(main())
Bedrock 인증 (TypeScript)·typescript
import AnthropicBedrock from '@anthropic-ai/bedrock-sdk';

// 인증은 표준 AWS credential chain (profile, env, IAM role).
const client = new AnthropicBedrock({ awsRegion: 'us-east-1' });

const message = await client.messages.create({
  model: 'anthropic.claude-sonnet-4-6-v1:0',
  max_tokens: 256,
  messages: [{ role: 'user', content: 'One-line summary of Bedrock vs direct API.' }],
});
console.log(message.content);

External links

Exercise

관리하는 프로젝트의 인증 정책을 써봐 — 어느 경로가 primary, 무엇이 무엇으로 폴백(혹은 '설계상 폴백 없음'), 어떤 env 변수 이름이 시크릿을 들고 있는지. 세 문장 이내.
Hint
폴백이 없으면 명시적으로 그렇게 써. 부재도 정책의 일부야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.