Lightsail 블루프린트로 OpenClaw를 설치하면 기본값이 AWS Bedrock입니다. 그런데 IAM 크로스 계정 에러가 발생하고, Claude Max 구독도 쓸 수 없다는 걸 확인하는 과정을 거쳐 Anthropic API Key + Gemini Fallback 이중 구성으로 정착했습니다.
AWS Lightsail에 OpenClaw 멀티 에이전트 구축하기 — 1편
Table of Contents
배경 — 처음엔 그냥 되는 줄 알았다

1편에서 Lightsail 블루프린트로 OpenClaw를 설치하고 Discord Bot 3개를 연결했습니다. AI 모델 설정은 블루프린트가 자동으로 해줬으니 당연히 잘 되겠거니 했습니다.
그런데 실제로 Discord에서 봇에게 메시지를 보냈을 때 응답이 없었고, 로그를 확인하니 모델 호출 자체가 실패하고 있었습니다. 원인을 추적하면서 세 가지 중요한 사실을 알게 됐습니다.
- Lightsail 블루프린트의 기본 AI 설정은 AWS Bedrock인데, IAM 설정이 깨져 있었다
- "Claude Max 구독을 쓰면 되지 않나?"라고 생각했지만 Anthropic이 2026년 1월에 막았다
- 결국 Anthropic API Key + Gemini Fallback 이중 구성이 현실적인 최적해였다
삽질 1 — AWS Bedrock IAM 크로스 계정 에러
증상
SSH에서 현재 자격증명 구조를 확인했습니다.
cat ~/.aws/configCode language: JavaScript (javascript)
[profile assumed]
role_arn = arn:aws:iam::997340363175:role/LightsailRoleFor-i-045388b98a8ca779c
credential_source = Ec2InstanceMetadata
region = ap-northeast-2
AWS_PROFILE=assumed로 설정되어 있는 건 확인했는데, IAM Role이 실제로 연결되어 있는지 확인해봤습니다.
# 인스턴스에 연결된 IAM Role 확인
curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/Code language: PHP (php)
아무것도 반환되지 않았습니다. 인스턴스에 IAM Role이 연결되지 않은 상태였습니다.
원인
Lightsail 인스턴스 (계정: 505275555748)
↓ AssumeRole 시도
LightsailRoleFor-i-045388b98a8ca779c (계정: 997340363175)
↓ 권한 없음 → 에러
두 개의 서로 다른 AWS 계정 간에 권한 위임이 필요한 구조였습니다. Lightsail 블루프린트가 이 구조를 의도했지만, 실제 IAM 크로스 계정 설정이 빠진 상태로 배포된 것입니다.
IAM 설정을 고치는 것도 가능하지만, Lightsail 블루프린트의 AWS 계정 구조를 직접 건드리는 건 리스크가 있었습니다. 더 간단한 방법이 있었습니다.
삽질 2 — “Claude Max 구독 쓰면 되지 않나?”
Bedrock이 복잡하다면 Claude Max 구독을 OpenClaw에 직접 연결하면 되지 않을까 생각했습니다. 그런데 확인해보니 이것도 안 됐습니다.
Anthropic의 정책 변경 (2026년 1월)
2026년 1월 9일, Anthropic은 Claude Free, Pro, Max 계정의 OAuth 토큰을 서드파티 도구에서 사용하지 못하도록 서버사이드 차단을 배포했습니다.
영향을 받은 도구들: OpenClaw, OpenCode, Cline 등 Claude 구독을 활용하던 모든 서드파티 에이전트
❌ Claude Max OAuth 토큰 → OpenClaw (ToS 위반, 서버사이드 차단)
✅ Claude Max → claude.ai (정상)
✅ Claude Max → Claude Code CLI (정상)Code language: CSS (css)
즉, Claude Max 구독은 claude.ai나 Claude Code에서만 사용할 수 있습니다.
그렇다면 선택지는?
| 방식 | 가능 여부 | 비용 |
|---|---|---|
| AWS Bedrock (IAM) | ⚠️ 설정 복잡 | 토큰당 과금 |
| Anthropic API Key | ✅ 권장 | 토큰당 과금 |
| Claude Max OAuth | ❌ ToS 위반 | - |
| OpenAI API | ✅ 가능 | 토큰당 과금 |
| 로컬 모델 | ✅ 가능 | 서버 비용만 |
Anthropic API Key가 가장 간단하고 명확한 방법입니다.
해결 — Anthropic API Key로 전환
1단계: API Key 발급
Anthropic 콘솔에서 API Key를 발급합니다.
console.anthropic.com → API Keys → Create Key → 키 복사Code language: CSS (css)
발급 후 월 예산 상한(Hard Limit)도 함께 설정해두는 것을 권장합니다.
console.anthropic.com → Billing → Usage Limits
→ Monthly budget limit 설정Code language: CSS (css)
2단계: openclaw.json 수정
nano ~/.openclaw/openclaw.jsonCode language: JavaScript (javascript)
"models" 섹션을 아래로 교체합니다.
{
"models": {
"providers": {
"anthropic": {
"apiKey": "sk-ant-여기에_API_KEY"
},
"google": {
"apiKey": "여기에_GEMINI_API_KEY"
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-6",
"fallback": "google/gemini-1.5-flash"
},
"contextTokens": 50000
}
}
}Code language: JSON / JSON with Comments (json)
3단계: Gateway 재시작
openclaw gateway restart
재시작 후 모델 상태를 확인합니다.
openclaw models status
Gemini 1.5 Flash Fallback 구성
왜 Fallback이 필요한가
Anthropic API는 두 가지 상황에서 실패할 수 있습니다.
첫째, Rate Limit 초과: 여러 사용자가 동시에 사용하면 단기 Rate Limit에 걸릴 수 있습니다.
둘째, 월 예산 소진: Anthropic 콘솔에서 설정한 Hard Limit에 도달하면 호출이 차단됩니다.
이 두 경우에 Gemini가 자동으로 받아주는 구조입니다.
Gemini API Key 발급
Google AI Studio에서 무료로 발급할 수 있습니다.
Gemini 1.5 Flash는 구글의 무료 티어 내에서 상당한 양의 호출이 가능해서, 비상용 fallback으로는 충분합니다.
aistudio.google.com → API Key → Create API key → 키 복사Code language: CSS (css)
Fallback 동작 방식
사용자 요청
↓
anthropic/claude-sonnet-4-6 호출 시도
↓ (성공) ↓ (실패: rate limit, 예산 초과 등)
Claude 응답 google/gemini-1.5-flash 호출
↓
Gemini 응답
비용 방어 3중 구조
최종 설정에서 비용을 제어하는 레이어가 세 개입니다.
레이어 1: contextTokens 상한선
"agents": {
"defaults": {
"contextTokens": 50000
}
}Code language: JavaScript (javascript)
세션이 길어질수록 컨텍스트가 쌓여 토큰 비용이 지수적으로 증가합니다. 50k 토큰으로 상한을 두면 이를 방지할 수 있습니다.
레이어 2: Anthropic 콘솔 Hard Limit
Anthropic 콘솔에서 설정한 월 예산 Hard Limit입니다. 이 한도에 도달하면 Anthropic API 호출이 차단됩니다. 이때 Gemini fallback이 자동으로 받아줍니다.
레이어 3: Gemini Free Tier
Claude API 비용이 소진되거나 Rate Limit에 걸려도 서비스가 중단되지 않습니다. Gemini 1.5 Flash 무료 티어가 버퍼 역할을 합니다.
전체 비용 구조
Claude Max ($200/월) → claude.ai, Claude Code CLI 전용
Anthropic API (종량제) → OpenClaw 기본 모델
Gemini API (무료티어) → OpenClaw fallback
AWS Lightsail ($20/월) → 서버 고정비
2~3명이 일반적인 비서 용도로 사용할 경우 Anthropic API 비용은 월 $10~30 수준이고, Gemini fallback이 일부를 흡수하면 그보다 낮아질 수 있습니다.
상태 확인 명령어
# 모델 연결 상태 확인
openclaw models status
# 전체 게이트웨이 상태
openclaw status
# 최근 로그 (모델 호출 실패 여부 확인)
openclaw gateway logs --tail 50Code language: PHP (php)
추가로 알아두면 좋은 점
OpenAI도 fallback으로 쓸 수 있다
Gemini 외에 OpenAI GPT 모델도 fallback으로 등록할 수 있습니다. 여러 개의 fallback을 순서대로 지정하는 것도 가능합니다.
"model": {
"primary": "anthropic/claude-sonnet-4-6",
"fallback": ["google/gemini-1.5-flash", "openai/gpt-4o-mini"]
}Code language: JavaScript (javascript)
로컬 모델로 비용 0원 구성도 가능
서버 스펙이 충분하다면 Ollama 같은 로컬 모델을 fallback으로 쓰는 것도 가능합니다. 다만 현재 4GB RAM 스펙에서는 실용적인 크기의 로컬 모델 운영이 어렵습니다.
에이전트별 모델을 다르게 지정할 수 있다
무거운 작업을 담당하는 에이전트는 Sonnet, 가벼운 질문만 받는 에이전트는 Flash를 primary로 지정하면 비용을 더 줄일 수 있습니다.
{
"id": "clawbot2",
"model": {
"primary": "google/gemini-1.5-flash"
}
}Code language: JSON / JSON with Comments (json)
마무리
핵심을 세 줄로 정리합니다.
- Lightsail 블루프린트의 기본 Bedrock 설정은 IAM 크로스 계정 구조로 되어 있어서 직접 수정하기 복잡합니다. Anthropic API Key로 전환하는 게 훨씬 빠릅니다.
- Claude Max 구독은 OpenClaw에 쓸 수 없습니다. 2026년 1월부터 Anthropic이 서드파티 OAuth 연결을 서버사이드 차단했습니다.
- Anthropic API Hard Limit + Gemini Fallback + contextTokens 상한의 3중 구조로 비용 폭탄을 방어할 수 있습니다.
다음 글에서는 SOUL.md와 AGENTS.md를 어떻게 작성하느냐에 따라 봇의 페르소나와 동작이 어떻게 달라지는지, odungclaw / clawbot2 / clawbot3 세 봇을 실제로 다르게 설정한 사례를 다룹니다.
참고 링크
- Anthropic 콘솔: https://console.anthropic.com
- Google AI Studio (Gemini API Key): https://aistudio.google.com/apikey
- OpenClaw 공식 문서: https://docs.openclaw.ai
조회수: 0