kaggle notebook에 service key 설정이 누락된 것 같습니다
kaggle ML단계가 RLS설정때문에 안도는 것 같은데, 제가 강의 중간에 놓친건지 해당 부분에 대한 내용이 보이지 않습니다.
--클로드 답변 내용--
Kaggle ML 단계가 RLS에 막혀 매일 밤 죽는 상태.
- RLS를 켰는데 Kaggle 노트북엔 anon 키가 주입돼 DB 읽기/쓰기 0건 → 매일 21:00 파이프라인 Step 2 실패
- 수정 코드(노트북에 service_role 주입)는 작성만 됐고 아직 배포 안 됨
- → deploy2.sh 배포 + 재실행으로 끝까지 통과 확인 필요 (직전에 하던 작업)
回答 2
1
안녕하세요, @eunno님!
정확히 짚어주셨네요. 저도 급하게 장 시작 전에 해당 문제를 해결했습니다.
말씀하신 대로 RLS를 켜면서 Kaggle 노트북이 막힌 게 맞습니다.
기존에 Kaggle 코드에서 쓰던 키가 anon 키였는데, RLS를 켜니까 접근 권한이 없어서 데이터가 전부 막히고 노트북이 에러로 죽은 거였습니다.
우선 원인을 살펴보면, 서버 앱은 service_role 키로 접속해서 RLS를 우회하는데, Kaggle 노트북에는 anon 키가 들어가고 있었던 거죠. 그러니 RLS가 켜진 뒤로는 데이터를 전혀 읽지 못해서 노트북이 실행되지 않았던 겁니다.
처음에는 Kaggle Secrets 기능을 쓰면 되지 않을까 싶어서 시도해봤는데, API로 커널을 올리면 자꾸 연결 에러가 나서 실패하더라고요. 이건 캐글 플랫폼 이슈라 저희가 건드릴 수 있는 부분이 아니었습니다.
그래서 저희는 노트북을 올리기 직전에, 아예 service_role 키를 노트북 첫 번째 셀에 직접 주입하는 방식으로 해결했습니다. 구체적인 적용 순서는 이렇습니다.
[참고로 코드는 제가 main, main2 브랜치에 올려놨습니다. git pull 받아주세요~]
1) 먼저 Supabase 대시보드의 Project Settings 내 API 메뉴에서 service_role 키를 복사한 뒤, 서버 .env 파일에 SUPABASE_SERVICE_ROLE_KEY라는 이름으로 추가해 줍니다.
2) 그다음 app/core/config.py 파일에 다음과 같이 환경변수를 읽어오도록 한 줄을 추가해 주시고요.
SUPABASE_SERVICE_ROLE_KEY: str = os.getenv("SUPABASE_SERVICE_ROLE_KEY", "")
3) 서버 DB 클라이언트인 app/db/supabase.py에서도 service_role을 우선적으로 바라보도록 수정합니다.
key = settings.SUPABASE_SERVICE_ROLE_KEY or settings.SUPABASE_KEY
4) (핵심) 노트북 주입 코드, ml_trigger_service.py의 buildipynb_with_injected_secrets 함수에서는 anon 키 대신 service_role 키를 첫 셀에 주입해 줍니다.
supa_key = settings.SUPABASE_SERVICE_ROLE_KEY or settings.SUPABASE_KEY
5) 마지막으로 노트북에서 실행될 predict.py 파일이 이 service_role 키를 가장 먼저 읽도록 아래와 같이 수정해 주시면 됩니다.
SUPABASE_KEY = os.environ.get("SUPABASE_SERVICE_ROLE_KEY") or os.environ.get("SUPABASE_KEY")
참고로 키가 주입되어 새로 생성되는 predict.ipynb 파일은 깃허브에 올라가지 않도록 git rm --cached 명령어로 제외하고 .gitignore 파일에도 꼭 등록해 주세요. 커널 자체도 당연히 비공개로 유지하셔야 합니다.
이 내용은 준비해서 강의에도 업데이트해 두겠습니다.
좋은 질문 주셔서 정말 감사드립니다!
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. eunno님.
질문하신 Kaggle 노트북과 관련된 문제는 RLS(Row-Level Security) 설정 때문일 가능성이 큽니다. 현재 RLS 정책으로 인해 Kaggle에서 실행하는 노트북에서 anon 키를 사용하고 있어 데이터베이스의 읽기와 쓰기가 원활하지 않은 것으로 보입니다. 이를 해결하기 위해 노트북에 service_role 키를 주입해야 합니다.
아래 몇 가지 해결 방안을 공유드리겠습니다:
Service Role Key 사용: Kaggle 노트북에서 데이터를 제대로 읽고 쓰려면 익명 키(anon key) 대신 서비스 역할(service_role) 키를 설정하는 것이 중요합니다. 이는 더 많은 권한을 부여하여 DB와의 상호작용을 수월하게 합니다.
노트북 수정 및 배포: 노트북에서 service_role 키를 사용하는 코드로 수정되었다면, 이를 배포하고 재실행하여 원하는 결과를 얻을 수 있습니다. 강의 중 배포 방법에 대한 설명이 누락되었다면, 관련하여 추가적인 가이드를 제공받는 것이 좋습니다.
RLS 설정 확인: Supabase에서 관리하는 테이블들의 보안 설정을 확인하고, Kaggle 노트북에서 필요한 권한을 부여할 수 있도록 설정을 조정합니다.
이러한 방법 외에도 문제를 해결하기 위한 더 많은 유사 사례와 답변을 인프런 커뮤니티에서 찾을 수 있습니다. 비슷한 경험을 공유하는 다른 학습자들의 게시물을 찾아보는 것도 많은 도움이 될 것입니다.
유사한 사례 찾기
- 행 레벨 보안 설정 문제와 해결책: RLS 설정이 Kaggle 연동에 영향을 미치는 유사한 문제를 다룬 게시물입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
주말에 실행할 경우 update_economic_data_in_background에 로직 변경 필요성
1
20
1
프로그램 실행시간에 대한 질문
1
21
2
비중 및 매수 종목수 조정.
1
30
2
Claude api가 소식 동기화가 늦는 문제
1
40
2
슬롯 관련 문의
1
28
2
실제 계좌 잔고 및 테스트중에
1
66
4
안녕하세요
1
52
3
매일 사용시 토큰사용량
1
57
2
LLM판단에 문제가 있는 것 같습니다
1
43
2
실습 2인데 커서아이디 같은거 다운로드 안내같은건 따로없나요??
1
37
2
5. 실습 (1) 개발 환경 준비와 프로젝트 구조 03:11
1
38
1
여태까지 발견한 이슈들 공유드립니다.
1
60
2
Cursor 실행 문의
1
45
2
슬랙에서 메시지 일부 잘림
1
38
2
API 오류: EGW00201 - 초당 거래건수를 초과
1
52
2
캐글 save version 할 시 md파일과 다름.
1
42
2
FRED API
1
47
1
제가 AWS 에 배포했는데
1
42
1
갑자기 stock_prediction은 어디서 발생한건가요?
1
50
2
pipeline/run-buy-pipeline 실행시 "LLM호출전체실패"에러발생
1
34
2
오늘 처음으로 자동매매가
1
64
2
모의투자 현황
1
47
2
자동으로 계속 돌게하려면
1
61
2
새로운 종목 후보군 추가시 확인해야할 사항들
1
47
2

