Streamlit의 secrets
민감한 정보(API 키, 데이터베이스 자격증명 등)를 앱 내에서 안전하게 관리하기 위한 기능
코드에 직접 값을 하드코딩하지 않고, 민감한 데이터를 외부 파일에서 불러올 수 있음
Streamlit Cloud > App Settings > Secrets
Streamlit Cloud에서 배포하는 경우, Streamlit의 웹 인터페이스에서 Secrets설정
JSON 형식으로 민감한 정보를 추가
{
"API_KEY": "your_api_key",
"DB_USER": "your_db_user",
"DB_PASS": "your_db_password"
}
앱 코드에서 st.secrets로 불러오기
import streamlit as st
api_key = st.secrets["API_KEY"]
db_user = st.secrets["DB_USER"]
.streamlit/secrets.toml 파일
로컬에서 Streamlit 앱을 개발할 때 .streamlit폴더 안에 secrets.toml 파일을 만들어 secrets 관리
.streamlit/secrets.toml파일 생성
[API]
API_KEY = "your_api_key"
[DATABASE]
DB_USER = "your_db_user"
DB_PASS = "your_db_password"
코드에서 st.secrets로 불러오기
import streamlit as st
api_key = st.secrets["API"]["API_KEY"]
db_user = st.secrets["DATABASE"]["DB_USER"]
Streamlit Cloud Secrets | 배포된 앱의 민감한 정보를 관리 | 외부 사용자와 공유할 앱에서 안전하게 환경 변수를 설정할 수 있음 |
.streamlit/secrets.toml | 로컬 개발 환경에서 민감한 정보 관리 | 개발 중 민감한 데이터를 안전하게 관리할 수 있음 .secrets.toml은 gitignore에 포함해 저장소에 노출되지 않도록 해야 함 |
import streamlit as st
# 기본값 설정
api_key = None
try:
# 로컬 환경에서는 secrets.toml을 참조
api_key = st.secrets["API_KEY"]
except KeyError:
# 로컬 환경에서 secrets.toml이 없거나, 배포 환경에서는 App Settings에서 값 가져옴
api_key = "default_value" # 필요하면 기본값 설정
st.write(f"API Key: {api_key}")
로컬과 배포 환경에서 모두 호환되게 작성
# 주석은 #로 시작
title = "TOML Example" # 문자열 값
[owner] # 섹션 정의
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00Z # 날짜 (ISO 8601 형식)
[database]
server = "192.168.1.1"
ports = [8001, 8001, 8002] # 배열
connection_max = 5000
enabled = true # 불리언 값
[API]
API_KEY = "your_api_key"
[DATABASE]
DB_USER = "your_db_user"
DB_PASS = "your_db_password"
TOML 파일 주요 문법, 예제
'OpenAI API 활용' 카테고리의 다른 글
변수 관리 방식에 따른 API key 관리와 활용(Local) - 프로젝트 단위 vs. 임시 설정 vs. 영구적 시스템 설정 (0) | 2025.01.25 |
---|---|
streamlit run app.py (8) | 2024.12.16 |
streamlit hello (10) | 2024.12.15 |
Streamlit (5) | 2024.12.13 |
터미널로 GPT를 만나봄 (7) | 2024.12.12 |