V VibeCoding 365
모든 가이드 에이전트 · Hermes
01

VIBECODING 365 / AGENT GUIDE

이미지와 파일을 R2에 둘 때 | Hermes용 트래픽과 권한 나누기

공개 CDN과 쓰기 권한을 나누는 실전 순서

핵심 판단

Cloudflare R2에 Hermes 홈/이미지/파일을 둘 때 이그레스와 버킷 권한, 공개 URL을 실수로 넓히지 않는 가이드.

  • 아래 목차에서 필요한 절차만 골라 읽으면 됩니다.

R2를 트래픽 무제한 저장소로만 보면, 업로드 경로와 캐시, 버킷 분리를 나중에 붙이다가 깨집니다. Hermes 홈/파일/이미지 서빙을 붙일 때는 공개 URL 경계와 업로드 검증이 본체입니다.

egress가 유리한 것과 업로드/저장/운영 요청 비용이 제로인 것은 다릅니다. 콘솔 요금표를 확인하세요. 공개 put을 열어 두면 스팸 업로드가 먼저 옵니다. 공개 버킷과 비공개 원본 버킷을 나누면 실수로 올린 시크릿이 검색에 노출되는 사고를 줄일 수 있습니다.

커스텀 도메인과 캐시 규칙을 정한 뒤 업로드하세요. URL이 바뀌면 본문 마크다운과 OG 이미지가 한꺼번에 깨집니다. 「이 객체는 누가 읽어도 되는가」에 답이 모호하면 비공개로 둡니다.

공개 URL이 퍼진 뒤에는 삭제만으로 끝나지 않습니다. 캐시 퍼지와 객체 키 폐기를 한 세트로 적어두세요. 업로드 주체를 공개 홈용과 내부 분석용으로 나누면 실수가 줄어듭니다.

배포 파이프라인 마지막에 공개 prefix를 검사해 env나 키 파일이 없는지 확인하세요. 검사가 없으면 업로드 실수가 그대로 공개됩니다. 임시 URL을 본문에 박지 마세요.

먼저 나눌 세 경계

  • 공개 정적(웹에서 읽힘) vs 비공개 원본
  • 이미지 vs 문서/바이너리
  • 업로드 API 경로 vs 공개 읽기 경로

한 버킷에 섞으면 캐시 헤더와 권한 실수가 커집니다.

💡 Tip: 공개 버킷과 비공개 원본 버킷을 나누면, 실수로 올린 시크릿/원본이 검색에 노출되는 사고를 줄일 수 있습니다.

업로드 경로를 잠근다

인증된 업로더만 put 가능하게 하고, 콘텐츠 타입/크기 상한/경로 prefix를 고정합니다. 브라우저는 짧은 수명의 서명 URL만 받게 두고, 업로드 API는 서버에서만 서명하세요.

⚠️ 주의: 「egress 무료」를 업로드/운영/저장 비용 제로로 오해하지 마세요.

캐시와 URL을 먼저 정한다

커스텀 도메인과 캐시 규칙을 정한 뒤 업로드하세요. URL이 바뀌면 본문 마크다운과 OG 이미지가 한꺼번에 깨집니다. 버전 prefix(예: /2026-07/)를 쓰면 교체가 쉽습니다.

비용 기대치를 나눈다

저장, 클래스 A/B 운영 요청, 커스텀 도메인, 워커 연동을 같은 「무료」로 묶지 마세요. 월간 예상 객체를 적어 보고 콘솔 계산기와 대조합니다. 업로드 스크립트 실수 하룻밤이면 객체 수가 튀므로 일별 알림을 거세요.

캐시 무효화 연습

첫 배포 직후 작은 파일을 교체해 무효화가 반영되는 시간을 잽니다. 민감 파일을 올렸다면 삭제와 함께 캐시 퍼지, 필요하면 객체 키 폐기를 적어둡니다.

Hermes가 읽는 경로와 공개 CDN을 구분한다

공개 CDN URL을 프롬프트에 넣으면 외부에서도 같은 파일을 볼 수 있습니다. 내부 분석용 원본은 서명 URL이나 서버 로컬 마운트로만 읽고, 공개 홈 이미지만 CDN 경로를 쓰세요. 업로드 주체를 나누면 실수로 로그가 공개 prefix로 들어가는 일을 줄입니다.

공개 URL이 퍼진 뒤의 운영

파일 URL이 본문과 SNS 카드에 퍼지면 버킷 정리만으로 끝이 아닙니다. 예전 경로를 북마크한 사용자와 크롤러가 남고, 캐시가 남으면 삭제 후에도 한동안 내용이 보입니다. 그래서 민감 객체를 올렸다면 삭제/퍼지/키 폐기를 한 세트로 적어둡니다.

이미지 변환본과 원본 보관 정책을 처음에 정하면 청구가 덜 흔들립니다. 원본은 비공개에 짧게 두고, 공개 버킷에는 변환본만 두는 방식이 실수입니다. Hermes 홈 이미지가 드물게 바뀌면 TTL을 길게, 자주 바뀌면 버전 prefix가 무효화보다 단순할 때가 많습니다.

업로드 스크립트를 「만능」으로 만들지 마세요. 공개 홈 에셋용과 내부 분석 파일용이 같은 스크립트/같은 자격 증명이면, 실수 한 번에 내부 파일이 공개 prefix로 갑니다. 주체를 나누는 번거로움이 사고 비용보다 쌉니다.

월말에만 비용을 보지 마세요. 객체 수와 운영 요청 spike 알림을 걸고, spike면 put을 잠시 닫는 런북을 한 줄로 남깁니다. R2라서 걱정 없다는 문장은 운영 문장이 아닙니다.

첫 업로드 전에 적을 한 줄

「이 객체는 누가 읽어도 되는가」에 답이 모호하면 비공개로 둡니다. 공개로 올리는 순간 URL은 통제 밖으로 나가기 시작합니다. Hermes 홈 에셋만 공개 prefix를 쓰고, 분석용 원본은 분리하세요.

공개 prefix 검사

배포 파이프라인 마지막에 공개 버킷 prefix를 나열해, env/로그/키 파일 확장자가 없는지 검사합니다. 검사가 없으면 업로드 실수가 프로덕션에 그대로 갑니다. 실패 시 배포를 멈추게 두는 편이 사고 뒤에 지우는 것보다 쌉니다.

커스텀 도메인 DNS와 인증서가 준비되기 전에 임시 URL을 본문에 박지 마세요. 본문이 퍼지면 임시 URL을 일괄 치환해야 합니다. 도메인과 캐시 규칙이 확정된 뒤 업로드하는 순서가 안전합니다.

Hermes가 파일을 읽어 후속 작업을 할 때는, 에이전트에게 준 경로가 공개 CDN인지 내부 경로인지 프롬프트에 명시하세요. 구분하지 않으면 모델이 공개 URL을 로그에 반복해 남길 수 있습니다.

출처와 링크

조사 기준: 2026년 7월. 요금표와 공개/비공개 경계를 설정 직전 다시 확인하세요.

FAQ

자주 묻는 질문

R2면 트래픽비가 정말 없나요?

공개 인터넷 egress 측면에서 유리한 경우가 많지만 저장/운영 요청 등은 별개입니다. 콘솔 요금표를 확인하세요.

이미지와 문서 버킷을 나눠야 하나요?

권장합니다. 캐시 헤더와 공개 범위, 수명 정책이 달라지기 쉽습니다. 한 버킷에 섞으면 권한 실수가 커집니다.

업로드 검증은 무엇을 보나요?

인증된 업로더만 put, 콘텐츠 타입과 크기 상한, 경로 prefix 고정입니다. 공개 put을 열면 스팸 업로드가 먼저 옵니다.

캐시 무효화는 언제 연습하나요?

첫 배포 직후와 이미지 교체 절차에 포함하세요. 한 번도 안 해 보면 잘못된 파일이 CDN에 남는 사고를 늦게 발견합니다.

Hermes 홈과 파일 서버를 같은 도메인에 둬도 되나요?

가능하지만 관리 업로드 경로와 공개 정적 경로를 나누세요. 인증과 캐시 규칙이 섞이면 위험합니다.

민감 파일을 올렸다면?

삭제만으로 끝내지 말고 캐시 퍼지와 객체 키 폐기를 같이 하세요. 공개 URL이 퍼졌다고 가정합니다.

NEXT STEP / PRACTICE

읽고 끝내지 말고
다음 행동 하나.

막히면 Q&A에 짧게 남기거나, 쌩초보 가이드에서 오늘 할 일 하나만 골라 보세요.

Q&A 질문하기 쌩초보 가이드